【发布时间】:2011-05-27 03:07:57
【问题描述】:
我发现了我认为 ggplot2 使用 geom_text 的错误,我想知道是否有人有解决方法/能够指出我做错了什么。
考虑以下示例代码:
library(ggplot2)
Treatment <- rep(c('C','T'),3)
Group <- rep(c('A','B','C'),each=2)
Response <- c(0.22894321, 0.23391813, 0.92256514, 0.92705167, 0.05982670, 0.09667674)
Differences <- c('+0pts', '+0pts', '+0pts', '+0pts', '+4pts', '+4pts')
df <- data.frame(Treatment, Group, Response, Differences)
ydef <- c(0.03, 0.03, 0.2)
hist <- ggplot(df, aes(x=Group, y=Response, fill=Treatment, stat="identity"))
hist + geom_bar(position = "dodge") + geom_text(aes(label = Differences,y=ydef))
如果这对您的工作方式与对我的工作方式相同 - 使用最新版本的 ggplot2 和 R 2.12.2 - B 组和 C 组应该各有两个文本浮动,间隔相等的距离。显然这不是我们想要的。现在改变'ydef'这样
ydef <- c(0.03, 0.03, 0.03)
重新运行上面的脚本,问题就解决了——每个组现在只有一个文本浮动对应于差异(或者更确切地说是两个,完全重叠在一起)。这有什么意义?我一直在一个相当大规模的应用程序中使用这个基本结构,直到我用这些特定的数字得到这个特定的例子之前没有遇到任何问题。
问题的一部分可能是我构建“差异”的方式,通过将其作为列添加到数据框并使用 geom_text 将此文本放在图表上。如果有一种方法可以使用只有三个字符条目的向量来做同样的事情,我相信这会解决问题。
简而言之(1)请帮助! (2) 这是一个潜在的有趣错误,供 ggplot2 社区考虑。
干杯, 亚伦
【问题讨论】: