首页 > 解决方案 > 如何在ggplot中的不均匀中断之间获得相等的间距

问题描述

我的剧情:

使用以下代码生成:

x <- data.frame("col1"=c(7.2,4.3,4.1,3.1,
                      1.6,1,0.8,0.4,0.5,
                      0.4,0.3,0.2,0.04,0.1,0.1),
                    "col2"=c(3.9,2.4,2.0,4.8,1.3,
                          1.0,1.1,0.8,0.6,0.9,1.1,
                          0.9,0.5,0.7,0.7))

p <- ggplot(x, aes(x=col1,y=col2)) + geom_point()
p <- p + scale_y_continuous(breaks = c(0.01,.1,1,10),limits = c(0,10))
p <- p + scale_x_continuous(breaks = c(0.01,.1,1,10),limits = c(0,10))

我试图在 0.01、.1、1 和 10 之间实现均匀的间距,以便更容易看到较小值之间的差异。我唯一的想法是记录转换轴,但是还有其他合理的方法吗?

标签: rggplot2

解决方案


如果您想分散数据,那么对数转换可能是最简单的选择。此外,对数转换非常常见,因此对于您的情节的观察者来说,确定发生了什么并不难。无论如何,总是建议让正在发生的事情变得明显,因此您通常希望更改轴标题以反映这一点。

这是您指出的数据的建议,效果很好:

p + scale_x_log10(name='log col1', limits=c(0.01,10))

在此处输入图像描述

当然请注意,绘图不能从 0 开始,因为log10(0)is -Inf


推荐阅读