我使用ggplot2和geom_freqpoly函数生成了一个图表。我无法发布图片,但希望我可以描述我的问题。
我的图表显示两条线,用于沿x轴给定点的观察数量,增量为0.50,我的数据中的值仅存在于这0.50个间隔内。
我创建了这个示例数据集,希望能够说明:
AvgMargin <- c(0.00, 0.50, 2, 1, 1, 0.5, 0.5)
Median <- as.factor(c("High", "Low", "Low", "High", "High", "Low", "Low"))
Matches <- data.frame(AvgMargin, Median)
我使用的代码如下:
ggplot(Matches, aes(AvgMargin, colour=Median)) + geom_freqpoly(binwidth=0.5) + scale_x_continuous(breaks=-5:5)
我遇到的问题是我的线的峰值与我在x轴上所期望的值不对应。我的x轴上的值仅以0.50为增量,但我似乎在这些点之间有峰值(对于0.25和0.75,但我的数据中没有0.25和0.75的值)。
我想知道的是如何让我的线条与我的x轴相对应?
答案 0 :(得分:3)
根据我收到的答案,我现在有以下代码:
ggplot(Matches, aes(AvgMargin, colour=Median)) + geom_freqpoly(binwidth=0.5, origin=-0.25)
这给了我以下输出:
参数“origin”告诉垃圾箱从-0.25开始,因此中点和峰值现在落在我想要的增量上
答案 1 :(得分:0)
这是因为你设置binwidth的方式。试试这个:
ggplot(Matches, aes(AvgMargin, colour=Median)) +
geom_freqpoly() +
xlim(-5,5)
ggplot
将AvgMargin
计入垃圾箱并绘制每个垃圾箱中心的峰值。由于您的数据范围为[0,2]
,因此如果您设置binwidth=0.5
,则会在[0,0.5), [0.5,1), [1,1.5), [1.5,2), and [2,2.5)
处获得二进制数。峰值绘制在0.25,0.75,1.25和1.75以及2.25。如果省略binwidth=
参数,则默认为范围/ 30,或约0.066;第一个bin将以0.033为中心,最后一个bin将以2.033为中心。
因此,你制作的宽度越小,峰值越接近你想要的位置(但是,多边形也越窄):
ggplot(Matches, aes(AvgMargin, colour=Median)) +
geom_freqpoly(binwidth=0.0001)