如何在ggplot2中的y轴上的断点之间设置相等的距离(即使实际距离不同)?

时间:2019-07-14 19:44:22

标签: r ggplot2 plot limit

我正在尝试从本文中复制出一个情节:

https://www.nature.com/articles/s41467-019-10213-0

我要复制的情节是最左边的情节:

https://www.nature.com/articles/s41467-019-10213-0/figures/2

我能够准备数据并据此进行绘制。我唯一遇到的问题是如何在y轴上设置断点,使得每个断点之间的距离相等(即使两者之间的实际距离不同)。更准确地说:在我要复制的情节中,我们在y轴上有五个中断,范围从10 ^ -1到10 ^ -5:即使实际距离在10 ^ -1和10 ^ -2之间比10 ^ -4和10 ^ -5大得多,这些中断之间的距离相等。

我几乎在“ ggplot2”上阅读了Hadley Wickham的整本书,以了解如何做。我尝试在图的缩放层中设置限制和中断。我尝试更改expand参数。我尝试使用coord_cartesian将其“缩放”到图形中,并且还尝试更改y轴和x轴之间的比率。 您将在此处找到的数据只是一个任意示例,因此每个人都可以在一定程度上重现该示例。在实际情况下,分配绘制的范围为0到100。

[]

我希望发生的是y轴上的中断范围从10 ^ -1到10 ^ -5,但每次中断之间的距离是相等的。

这是我第一次问有关Stackoverflow的问题,对于给您带来的任何不便,我深表歉意。另外,我确保没有与我相关的问题,以确保它不是重复的。

1 个答案:

答案 0 :(得分:1)

这给了我想要的y轴:

my_plot +
  scale_x_continuous(breaks = seq(0,100,20)) + 
  scale_y_log10(breaks = c(0.00001, 0.0001, 0.001, 0.01, 0.1),
                limits= c(0.00001, 0.12),
               expand = expand_scale(mult = c(0.0001, 0.02), 
                                     add = c(0.0009, 0.001)))+
  geom_point(shape = 4) + geom_line() + theme(aspect.ratio=1.2)