使用hjust替换geom_text位置

使用hjust替换geom_text位置,第1张

概述我正在绘制堆积条形图并使用geom_text插入每个堆栈的值.我面临的困难是一些堆栈非常小/很窄,因此两个堆栈的文本相互重叠,因此不太可读.我想以一种方式调整文本定位,例如每个堆栈的文本位置在hjust == 1和hjust == -1之间交替,这样就不会有任何重叠(或任何其他会导致可读的方法)文本). 这是我正在做的事情的一个例子(下面提供了mydf的输入): library(ggplot2) 我正在绘制堆积条形图并使用geom_text插入每个堆栈的值.我面临的困难是一些堆栈非常小/很窄,因此两个堆栈的文本相互重叠,因此不太可读.我想以一种方式调整文本定位,例如每个堆栈的文本位置在hjust == 1和hjust == -1之间交替,这样就不会有任何重叠(或任何其他会导致可读的方法)文本).

这是我正在做的事情的一个例子(下面提供了mydf的输入):

library(ggplot2)ggplot(mydf,aes(x=variable,y = value,fill = category)) +   geom_bar(stat="IDentity") +  geom_text(aes(label = value,y = pos-(value/2)),size = 3)

到目前为止我尝试的是:

使用position = position_dodge(wIDth = 0.5)和position = position_jitter(h = 0.5,w = 0.5),但没有一个导致我试图做的事情.

我的第一个想法是定义hjust = c(1,-1)希望它将被回收并且文本将在hjust == 1和hjust == -1之间交替,但它会导致错误消息:

Error: Incompatible lengths for set aesthetics: size,hjust

我也试过定义size = c(3,3,3),hjust = c(1,-1,1,1)但这导致相同的错误消息.

我会很感激如何以正确的方式实现这一点(我也对其他建议持开放态度).

我无法弄清楚为什么dput不起作用(对我来说也没有),所以这里是可读格式的数据:

category variable value   pos maxpos1        AX       WW  47.8  47.8  184.12        AY       WW   5.6  53.4  184.13        AZ       WW  15.8  69.2  184.14        BX       WW  31.4 100.6  184.15        BY       WW  11.7 112.3  184.16        BZ       WW  10.7 123.0  184.17        CX       WW   2.2 125.2  184.18        CY       WW  21.4 146.6  184.19        CZ       WW  37.5 184.1  184.110       AX       SM  39.8  39.8  148.611       AY       SM   2.9  42.7  148.612       AZ       SM  13.2  55.9  148.613       BX       SM  22.7  78.6  148.614       BY       SM   7.3  85.9  148.615       BZ       SM   8.9  94.8  148.616       CX       SM   1.6  96.4  148.617       CY       SM  17.3 113.7  148.618       CZ       SM  34.9 148.6  148.619       AX     AsIs 156.9 156.9  519.020       AY     AsIs  13.1 170.0  519.021       AZ     AsIs  70.5 240.5  519.022       BX     AsIs  72.6 313.1  519.023       BY     AsIs  30.7 343.8  519.024       BZ     AsIs  35.6 379.4  519.025       CX     AsIs   5.2 384.6  519.026       CY     AsIs  44.8 429.4  519.027       CZ     AsIs  89.6 519.0  519.0
解决方法 通过创建一个hjust变量,您可以获得所需的结果.代码:
mydf$hj <- rep(c(1,-1),length.out=27)ggplot(mydf,y=value,fill=category)) +   geom_bar(stat="IDentity") +  geom_text(aes(label=value,y=pos-(value/2),hjust=hj),size=4)

这使:

@konvas提出的稍微替代解决方案:

ggplot(mydf,hjust=rep(c(1,length.out=length(value))),size=4)
总结

以上是内存溢出为你收集整理的使用hjust替换geom_text位置全部内容,希望文章能够帮你解决使用hjust替换geom_text位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1132636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存