RE:将单条上的数字与ggplot2对齐 [英] RE: Alignment of numbers on the individual bars with ggplot2

查看:194
本文介绍了RE:将单条上的数字与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆