在基础图中,当您使用hist
函数时,它会使用nclass.Sturges
函数自动计算中断,但在ggplot中,您必须提供中断。
如果我绘制经典忠实数据的直方图,我会得到以下图表:
data("faithful")
hist(faithful$waiting)
我在question中发现,你可以模仿
library(tidyverse)
data("faithful")
brx <- pretty(range(faithful$waiting), n = nclass.Sturges(faithful$waiting), min.n = 1)
ggplot(faithful, aes(waiting)) +
geom_histogram(color="darkgray", fill="white", breaks=brx)
但是我想在我的ggplot函数中添加中断,所以我尝试了这个:
ggplot(faithful, aes(waiting)) +
geom_histogram(color="darkgray", fill="white",
aes(breaks=pretty(range(waiting),
n = nclass.Sturges(waiting),
min.n = 1)))
这给了我以下错误:
Warning: Ignoring unknown aesthetics: breaks
Error: Aesthetics must be either length 1 or the same as the data (272): breaks, x
我理解这意味着什么,但我可以将长度为1的美学放在aes中,例如:
ggplot(faithful, aes(waiting)) +
geom_histogram(color="darkgray", fill="white", breaks=brx,
aes(alpha = 0.5))
我做错了什么?
答案 0 :(得分:0)
geom_histogram
根据文档使用与aes
相同的geom_bar
,breaks
不是那些美学之一。 (见geom_bar)
在工作代码块中,你直接传递给函数geom_histogram
并且它可以工作,但是在有问题的块中你将它作为审美传递,并且ggplot会抱怨。
这对我有用,我想你做了什么:
ggplot(faithful, aes(x = waiting)) +
geom_histogram(color = "darkgray", fill = "white",
breaks = pretty(range(faithful$waiting),
n = nclass.Sturges(faithful$waiting),
min.n = 1))