【发布时间】:2015-01-16 15:23:46
【问题描述】:
我使用 geom_histogram 在 R 中构建一个直方图,我想将我的 x 轴缩放到 155 个显示的 252 个,并查看一个刻度 evrey 5 个数字(0、5、10 等),我使用了 @987654321 @。它起作用了,但直方图并未显示在整个屏幕上。
我使用了xlim(0,155),它在整个屏幕上显示了直方图,但它覆盖了我定义的刻度。
【问题讨论】:
我使用 geom_histogram 在 R 中构建一个直方图,我想将我的 x 轴缩放到 155 个显示的 252 个,并查看一个刻度 evrey 5 个数字(0、5、10 等),我使用了 @987654321 @。它起作用了,但直方图并未显示在整个屏幕上。
我使用了xlim(0,155),它在整个屏幕上显示了直方图,但它覆盖了我定义的刻度。
【问题讨论】:
问题在于xlim(0, 155) 实际上是scale_x_continuous(lim = c(0, 155)) 的简写。因此,当您同时使用xlim() 和scale_x_continuous() 时,ggplot 会感到困惑,只会使用scale_x_continuous() 的两个调用之一。如果我这样做,我会收到以下警告:
“x”的比例已经存在。为“x”添加另一个比例,它将替换现有比例。
如您所见,ggplot 仅使用您上次定义的比例。
解决方案是将限制和中断放在scale_x_continuous() 的一次调用中。下面是一个示例,您可以运行它来看看它是如何工作的:
data <- data.frame(a = rnorm(1000, mean = 100, sd = 40))
ggplot(data, aes(x = a)) + geom_histogram() +
scale_x_continuous(breaks = seq(0, 155, 5), lim = c(0, 155))
让我再补充一点:中断现在不适合 bin 宽度,我觉得这很奇怪。所以我建议你也改变 bin 宽度。下面再次绘制直方图,但将 bin 宽度设置为 5:
ggplot(data, aes(x = a)) + geom_histogram(binwidth = 5) +
scale_x_continuous(breaks = seq(0, 155, 5), lim = c(0, 155))
以下链接提供了很多关于如何在 ggplot 中更改坐标轴的附加信息和示例:http://www.cookbook-r.com/Graphs/Axes_%28ggplot2%29/
【讨论】:
suppressMessages() 封装替换比例尺的命令。
break 为您的主要报价获取序列列表。试试:
scale_x_continuous(breaks=seq(0,155,5))
【讨论】: