RE:将单条上的数字与ggplot2对齐 [英] RE: Alignment of numbers on the individual bars with ggplot2
问题描述
我需要将标签放置在ggplot上的条上方。我曾经使用找到的方法(这里),但是从我的ggplot2更新开始,现在看起来不再工作了,因为我现在收到了错误消息:
Error in continuous_scale(c(y,ymin,ymax,yend,yintercept):
unused argument(s)(formatter =percent)
在使用示例时,如何再次绘制柱上方的数值:
<$ p (结构(c(1L,1L,1L,2L,2L,2L,3L,3L,
3L),。标签= c (0-50,000,50,001-250,000,250,001-Over),class =factor),
B =结构(c(1L,2L,3L,1L,2L,3L,1L ,2L,3L),.Label = c(0-50,000,
50,001-250,000,250,001-),class =factor),Freq = c(0.507713884992987,
0.258064516129032,0.23422159887798,0.18539325842697,0.525280898876405,
0.306179775280899, ),.Names = c(A,B,Freq),class =data.frame,row.names = c(NA,
,0.160958904109589,0.243150684931507,
0.595890410958904) -9L))
library(ggplot2)
ggplot(data = df,aes(x = A,y = Freq))+
geom_bar(aes(填充= 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 b $ b
在win 7机器上运行R 2.15 ggplot2 0.9
错误来自 scale_y_continuous
调用。标签的格式现在由标签
参数处理。有关更多详细信息,请参阅 ggplot2 0.9.0转换指南。
标签没有正确排列还有另一个问题;我通过添加一个 group = B
来修正 geom_text
的美学问题。但我不太清楚为什么这是必要的。我还从 geom_text
美学中拿出了 x = A
,因为它不是必需的(它会从 ggplot
调用。
library(ggplot2)
library (scale)
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()
I have the need to place labels above bars on ggplot. I used to use the method found (HERE) but this does not appear to work anymore since my ggplot2 update as I now get the error message:
Error in continuous_scale(c("y", "ymin", "ymax", "yend", "yintercept", :
unused argument(s) (formatter = "percent")
How can I again plot numeric values above the bars when using the example:
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()
Running R 2.15 ggplot2 0.9 on a win 7 machine
The error is from the scale_y_continuous
call. Formatting of labels is now handled by the labels
argument. See the ggplot2 0.9.0 transition guide for more details.
There was another problem with the labels not lining up correctly; I fixed that by adding a group=B
to the aesthetics for the geom_text
; I'm not quite sure why this is necessary, though. I also took out x=A
from the geom_text
aesthetics because it was not needed (it would be inherited from the ggplot
call.
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()
这篇关于RE:将单条上的数字与ggplot2对齐的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!