RE: выравнивание чисел на отдельных барах с помощью ggplot2
У меня есть необходимость разместить надписи над барами на ggplot. Раньше я использовал найденный метод ( ЗДЕСЬ), но он больше не работает, так как мое обновление ggplot2, как я сейчас получаю сообщение об ошибке:
Error in continuous_scale(c("y", "ymin", "ymax", "yend", "yintercept", :
unused argument(s) (formatter = "percent")
Как я могу снова построить числовые значения над столбцами при использовании примера:
df <- structure(list(A = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L,
3L), .Label = c("0-50,000", "50,001-250,000", "250,001-Over"), class = "factor"),
B = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("0-50,000",
"50,001-250,000", "250,001-Over"), class = "factor"), Freq = c(0.507713884992987,
0.258064516129032, 0.23422159887798, 0.168539325842697, 0.525280898876405,
0.306179775280899, 0.160958904109589, 0.243150684931507,
0.595890410958904)), .Names = c("A", "B", "Freq"), class = "data.frame", row.names = c(NA,
-9L))
library(ggplot2)
ggplot(data=df, aes(x=A, y=Freq))+
geom_bar(aes(fill=B), position = position_dodge()) +
geom_text(aes(label = paste(sprintf("%.1f", Freq*100), "%", sep=""),
y = Freq+0.015, x=A),
size = 3, position = position_dodge(width=0.9)) +
scale_y_continuous(formatter = "percent") +
theme_bw()
Запуск R 2.15 ggplot2 0.9 на машине win 7
1 ответ
Ошибка от scale_y_continuous
вызов. Форматирование меток теперь обрабатывается labels
аргумент. См. Руководство по переходу ggplot2 0.9.0 для более подробной информации.
Была другая проблема с этикетками, не выстраивающимися в линию правильно; Я исправил это, добавив group=B
к эстетике для geom_text
; Я не совсем уверен, почему это необходимо. Я тоже достал x=A
от geom_text
эстетика, потому что она не нужна (она будет унаследована от ggplot
вызов.
library("ggplot2")
library("scales")
ggplot(data=df, aes(x=A, y=Freq))+
geom_bar(aes(fill=B), position = position_dodge()) +
geom_text(aes(label = paste(sprintf("%.1f", Freq*100), "%", sep=""),
y = Freq+0.015, group=B),
size = 3, position = position_dodge(width=0.9)) +
scale_y_continuous(labels = percent) +
theme_bw()