使用ggplot 2,我可以在轴上插入一个断点吗?

使用ggplot 2,我可以在轴上插入一个断点吗?

我想制作一个条形图,其中一个值比所有其他值都大得多。有不连续y轴的方法吗?我的数据如下:

df <- data.frame(a = c(1,2,3,500), b = c('a1', 'a2','a3', 'a4'))p <- ggplot(data = df, aes(x = b, y = a)) + geom_bar() p 
<- p + opts(axis.text.x=theme_text(angle= 90, hjust=1))  + coord_flip()p


有什么方法可以让我的轴从1-10,然后490-500开始运行吗?我想不出任何其他方法来绘制数据(除了转换数据,这是我不想做的)。

[编辑2019-05-06]:

8年后,需要对上述代码进行修改,使其与ggplot2为了创建相同的图表:

library(ggplot2)ggplot(df) + 
  aes(x = b, y = a) +
  geom_col() +
  coord_flip()


波斯汪
浏览 1068回答 3
3回答

largeQ

正如其他地方所指出的,这不是ggplot2会处理得很好,因为断轴通常被认为是有问题的。其他战略往往被认为是解决这一问题的更好办法。Brian提到了一些(面见,两幅侧重于不同价值观集的情节)。人们经常忽略的另一个选择,尤其是条形图,是做一个表:从实际值来看,500并不掩盖其他值之间的差异!由于某些原因,表作为数据(一种可视化技术)没有得到足够的尊重。您可能会反对您的数据有很多类别,这些类别在表中变得难以处理。如果是这样的话,你的条形图可能会有太多的条形图,这也是不明智的。我不是为了桌子而争论全时间。但如果你用相对较少的酒吧制作条形图的话,它们绝对是值得考虑的。如果你用大量的条子制作条形图,你可能需要重新考虑一下。最后,还有axis.break函数中的plotrix实现断轴的包装。然而,根据我收集的信息,您必须亲自指定轴标签和位置。
打开App,查看更多内容
随时随地看视频慕课网APP