ggplot2 geom_freqpoly line不会以预期值跨越x轴

时间:2014-01-15 14:14:44

标签: r ggplot2

我使用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轴相对应?

2 个答案:

答案 0 :(得分:3)

根据我收到的答案,我现在有以下代码:

ggplot(Matches, aes(AvgMargin, colour=Median)) + geom_freqpoly(binwidth=0.5, origin=-0.25)

这给了我以下输出:

enter image description here

参数“origin”告诉垃圾箱从-0.25开始,因此中点和峰值现在落在我想要的增量上

答案 1 :(得分:0)

这是因为你设置binwidth的方式。试试这个:

ggplot(Matches, aes(AvgMargin, colour=Median)) + 
  geom_freqpoly() + 
  xlim(-5,5)

ggplotAvgMargin计入垃圾箱并绘制每个垃圾箱中心的峰值。由于您的数据范围为[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)