当使用对数比例尺时,我应该如何在ggplot2中设置坐标轴范围?

30

我有一系列的时间序列数据,其中所有的测量值都是介于1e6和1e8之间的整数:每月网站访问量。我想使用ggplot2将这些数据绘制成点和线图,但将测量值映射到对数刻度。大概是这样子的:

qplot(month, hits, data=hits.per.month, log="y")

当我这样做时,ggplot似乎将比例尺设置为1e6到1e8。我希望它的比例从0到1e8。自然的做法似乎对输出没有影响:

qplot(month, hits, data=hits.per.month, log="y", ylim=c(0, 100000000))

我可以通过在数据传递到qplot之前对其进行转换来获取想要的图像,但这会更改轴上的标签:

qplot(month, log10(hits), data=hits.per.month, log="y", ylim=c(0, 8))
我也尝试了各种与 scale_y_log10 相结合的组合,但都没有成功。
那么,在使用 ggplot2 中的对数刻度时,如何设置 Y 轴范围?
1个回答

40

如果不使用qplot,那么ggplot2的很多内容对我来说会更加清晰。这样你就不会把所有东西都塞进一个函数调用中:

df <- data.frame(x = 1:10,
                 y = seq(1e6,1e8,length.out = 10))

ggplot(data = df,aes(x = x, y =y)) + 
    geom_point() + 
    scale_y_log10(limits = c(1,1e8))

enter image description here

我假设您实际上并不希望y轴的最小值为0,因为在对数刻度上,这会带来问题。

谢谢。这对我有用。虽然我希望我能理解为什么它起作用而qplot版本不起作用。 - jml
9
你是如何让y轴的数值以上标的形式呈现的? - Jack Aidley
我该如何在ggplot中为y轴上的每个数字之间添加破折号以获得更好的可视性? - Mostafa90

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接