所以我有一个条形图,由于数据范围,保证y轴的对数图。所以问题是我的值为0.5,其中log10为-0.3。 由于条形变为负,因此用于放置标签的条形“顶部”实际上是“底部”,因此我的文本标签位于底部的“正上方”,这意味着在条形图的中间。 我想我可能不是第一个遇到这个问题的人,但是搜索相关的修复程序并没有帮助。最值得注意的是,我尝试使用道奇,但这并没有改变栏的“顶部”真的是“底部”。
所以有两个问题:
alpha=c('A','B','C','D')
value=c(0.5,10,40,1100)
table<-as.data.frame(alpha)
table<-cbind(table, value)
library(ggplot2)
graph <- ggplot(table, aes(x=alpha)) +
geom_bar(stat="identity",aes(y=value),width=0.5) +
geom_text(aes(y=value,label=value),vjust=-0.5) +
scale_y_continuous(trans="log10",limits=c(0.5,1400))
graph + theme_classic()
答案 0 :(得分:4)
修改数据标签的y
坐标的一个小技巧(如果值小于1,则使用ifelse()
将y
的值设置为1
。至于轴,只需隐藏X轴(将其设置为element_blank()
)并绘制一条新的水平线:
graph <- ggplot(table, aes(x=alpha)) +
geom_bar(stat="identity",aes(y=value),width=0.5) +
# Modify the placing of the label using 'ifelse()':
geom_text(aes(y=ifelse(value < 1, 1, value),label=value),vjust=-0.5) +
scale_y_continuous(trans="log10",limits=c(0.5,1400)) +
theme_classic() +
# Hide the X axis:
theme(axis.line.x = element_blank()) +
# Draw the new axis
geom_hline()
print(graph)
输出: