我有一个条形图,x轴标签按2列值分组。在图中,我想将一列(method
)值显示为图例,并将另一列(variable
)标记为图表本身上的标签,以便于阅读图片。但是,由于另一列的分组,图表上的每个标签都会重复出现。如何为唯一值设置单个标签而不是重复它。?
示例数据和当前输出如下。
df <- data.table(w = rep(1:3, each = 3),
value = c(1.83,1.83,1.94,1.78,.95,1.09,3.14,3.14,3.14),
method = seq(letters[1:3]),
variable = c("fit","fit","fit","lwr","lwr","lwr","upr","upr","upr"))
ggplot(df,aes(x=w, y=value, color=factor(variable), fill=factor(method))) +
geom_bar(stat="identity", position = "dodge") +
geom_text(aes(label=paste(variable)), position = position_dodge(width =0.9),vjust=-.25) +
theme_bw() +
scale_y_log10(breaks=c(1,2,11,101,1001),labels=c(0,1,10,100,1000)) +
# facet_wrap(~ppm) +
annotation_logticks(sides = "lr")
答案 0 :(得分:1)
我很喜欢说 ggplot2
非常善于绘制你提供的数据。您用作标签的变量具有正在绘制的重复:
variable<-c("fit","fit","fit","lwr","lwr","lwr","upr","upr","upr")
如果您不想重复,请创建一个没有它的变量用作标签:
df$label = ifelse(df$method == "b", as.character(df$variable), NA)
然后在aes(label = label)
来电中使用geom_text()
。
我还建议不要同时使用映射到条形图中不同变量的fill
和color
,但这取决于您。至少,如果您在geom_text()
图层中定义颜色映射而不是在绘图初始化中,则条形图将不会出现冲突的颜色轮廓。