使用ggplot2

时间:2016-09-04 22:59:53

标签: r ggplot2

我使用过Thinkcell,它的一个很酷的功能是它打破了非常长的y轴以适应图形。我不确定我们是否可以使用ggplot2执行此操作。我是ggplot2的初学者。所以,我很感激任何想法。

例如:

Series <- c(1:6)
Values <- c(899, 543, 787, 35323, 121, 234)
df_val_break <- data.frame(Series, Values)

ggplot(data=df_val_break, aes(x=Series, y=Values)) +
  geom_bar(stat="identity")

这会创建一个如下图形:

enter image description here

但是,我想要一个看起来像这样的图表:

enter image description here

但是,ggplot2似乎不支持断轴,因为它具有误导性(来源:Using ggplot2, can I insert a break in the axis?)。这个主题提出了几个方面 - 分面和表格。

虽然我喜欢桌子,但我不喜欢分面,因为我的分类变量&#34;系列&#34;密切相关。此外,我更喜欢Excel绘图表 - 它很快。

我有两个问题:

问题1:我喜欢的其中一个选项是https://stats.stackexchange.com/questions/1764/what-are-alternatives-to-broken-axes。图表是 enter image description here

由于缩放问题,我无法复制类似的图表。

问题2:这是一个小问题,以防万一推出可能有助于我们这样做的新软件包。 (上面链接的SO线程超过5年。)桌面上还有其他选项吗?

更新:我不认为我的问题是重复的,原因有两个:a)我已经完成了指示的帖子,并在此引用了解释我正在寻找一个类似于第三个图的解决方案我的帖子。具体来说,我希望绘制两个图形 - 一个具有较短的比例,另一个具有1/20比例的图形。由于比例问题,我无法使用ggplot2执行此操作。两个子图都被缩放到1 / nth,或者其中一个被缩放到正常范围。我相信这个版本对于不了解logInverse transformation的非技术受众非常重要。

enter image description here

1 个答案:

答案 0 :(得分:0)

我抓住了这个。我是初学者,所以我不确定这是否可以在文本放置方面进一步改进。由于尺度不同,我努力将高增长率系列和低增长率系列拟合在一个图表中。所以,我使用了facetting。

以下是代码:

 ggplot(data = df_val_break,aes(x=Series,y=Values)) +
       geom_bar(stat = "identity") + 
       facet_wrap(~Modified) + 
       geom_text(data = df_val_break[df_val_break$Modified=="HIGH_GROWTH",], aes(label = "x20 growth rate"),hjust=0.5, vjust=0)
     ggsave("post.png")

这是输出: enter image description here 我看到了很多问题:

a)高增长率图表在x轴上有系列2和系列6,但我们不需要它们。我不知道如何关闭它们。

b)geom_text与栏重叠。这看起来有点烦人。

c)我认为图表有点误导,特别是对于HIGH_GROWTH部分,因为y轴没有缩放LOW_GROWTH我原本想要显示两个不同的y-轴 - 一个按1/20缩放,另一个未缩放。