全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
7075 3
2013-08-31
各位高手:本人正在阅读《ggplot2:数据分析与图形艺术》中文版一书,书中“5.4节 展示数据分布”(P72)以ggplot2包自带的数据集diamonds中的depth变量为例说明如何绘制频率多边图(frequency polygon),其代码如下:

> depth_dist <- ggplot(diamonds, aes(depth)) + xlim(58, 68)
> depth_dist + geom_freqpoly(aes(y = ..density.., colour = cut), binwidth = 0.1)

绘图结果如下:
                      depth变量

试着举一反三,以diamonds数据集中的carat变量替代depth, 且相应修改取值范围为xlim(0, 3),其余不变。则修改后的代码如下:
> carat_dist <- ggplot(diamonds, aes(carat)) + xlim(0, 3)   
> carata_dist + geom_freqpoly(aes(y = ..density.., colour = cut),  binwidth = 0.1)

绘图结果如下:
                      carat变量
比较两张图会发现:depth变量那张频率多边图的纵坐标刻度是[0, 1],表示频率,这个没啥问题;但carat变量的频率多边图的纵坐标刻度却不在[0, 1]范围内,而是显示为刻度从0到2以上,这似乎不是表示频率的刻度。数次验证甚至重启R也是如此。

请教高手,为什么会出现这种现象,如何解决?谢谢。













二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-8-31 15:56:37
这是binwidth 大小设置的问题,你把它调大一点就可以了
carat_dist <- ggplot(diamonds, aes(carat)) + xlim(0, 5.5)
carata_dist + geom_freqpoly(aes(y = ..density.., colour = cut),  binwidth = 0.3)
carata_dist + geom_freqpoly(aes(y = ..density.., colour = cut),  binwidth = 0.6)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-1 20:56:31
多谢,马上试一下。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-1 21:10:16
多谢二楼,果然解决了纵坐标刻度问题。 谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群