首页 > 解决方案 > 重新调整ggplot中的水平轴

问题描述

我有一个简单的数据集,包含从 0 到 1 的值。当我绘制它时,水平轴自然为零。我希望这个参考值为 0.5,并且低于 0.5 的条形图与高于该阈值的条形图反转和着色。

my.df <- data.frame(group=state.name[1:20],col1 = runif(20))

p <- ggplot(my.df, aes(x=group,y=col1)) +
 geom_bar(stat="identity")+ylim(0,0.5)

我正在考虑将数据分成两部分,一个子集大于 0.5,另一个大于 0.5,然后将这两个子集稍微组合在同一个 ggplot 中。有没有其他更清晰的方法来做到这一点?谢谢!

标签: rggplot2geom-bar

解决方案


要以@jas_hughes的答案为基础,您可以从 col1 变量中减去 0.5,然后重命名 y 轴上的标签。

df <- data.frame(group=state.name[1:20],value=runif(20))

df %>% ggplot(aes(reorder(group,value),value-0.5)) + geom_bar(stat='identity') +
  scale_y_discrete(name='Value',
                   labels=c('0','0.5','1'),
                   limits=c(-0.5,0,0.5),
                   expand = c(-0.55, 0.55)) + 
  xlab('State') + 
  theme(axis.text.x = element_text(angle=45,hjust=1))

酒吧


推荐阅读