R-使用ggplot2模拟hist()的默认行为以获得仓位宽度
我试图用ggplot2绘制一个变量的直方图。不幸的是,ggplot2的默认binwidth留下了一些需要改进的地方: 我试着玩R-使用ggplot2模拟hist()的默认行为以获得仓位宽度,r,histogram,ggplot2,R,Histogram,Ggplot2,我试图用ggplot2绘制一个变量的直方图。不幸的是,ggplot2的默认binwidth留下了一些需要改进的地方: 我试着玩binwidth,但我无法摆脱那个丑陋的“空”垃圾箱: 有趣的是(对我来说),R的默认hist()函数似乎能更好地“分割”垃圾箱: 由于我正在使用ggplot2绘制所有其他图形,因此我也希望将其用于此图形,以保持一致性。如何使用ggplot2生成与hist()函数相同的bin“segmentation” 我试图在终端输入hist,但只得到了 function (x,
binwidth
,但我无法摆脱那个丑陋的“空”垃圾箱:
有趣的是(对我来说),R的默认hist()
函数似乎能更好地“分割”垃圾箱:
由于我正在使用ggplot2绘制所有其他图形,因此我也希望将其用于此图形,以保持一致性。如何使用ggplot2生成与hist()
函数相同的bin“segmentation”
我试图在终端输入hist
,但只得到了
function (x, ...)
UseMethod("hist")
<bytecode: 0x2f44940>
<environment: namespace:graphics>
我要补充的一点是,查看由
hist()
生成的直方图,这些箱子的宽度似乎为50000(例如,从1400000到1600000,正好有两个箱子);在ggplot2中将binwidth设置为50000不会生成相同的图形。ggplot2生成的图形具有相同的间隙 没有样本数据,总是很难得到可重复的结果,所以我创建了一个样本数据集
set.seed(16)
mydata <- data.frame(myvariable=rnorm(500, 1500000, 10000))
#base histogram
hist(mydata$myvariable)
这就是默认情况下hist()
计算中断的方式。然后,我们可以使用ggplot
命令使用这些中断
ggplot(mydata, aes(x=myvariable)) +
geom_histogram(color="darkgray",fill="white", breaks=brx) +
scale_x_continuous("My variable") +
theme(axis.text=element_text(size=14),axis.title=element_text(size=16,face="bold"))
下图显示了这两个结果并排,正如你所看到的,它们非常相似
此外,该空bim可能是由y轴限制引起的。如果形状超出了您在
缩放y连续
中指定的范围限制,它将从绘图中删除。看起来那个箱子想要14米高,但你把y剪成了12.5。我真希望geom_柱状图的默认行为与本地hist相同。
brx <- pretty(range(mydata$myvariable),
n = nclass.Sturges(mydata$myvariable),min.n = 1)
ggplot(mydata, aes(x=myvariable)) +
geom_histogram(color="darkgray",fill="white", breaks=brx) +
scale_x_continuous("My variable") +
theme(axis.text=element_text(size=14),axis.title=element_text(size=16,face="bold"))