楼主: kk22boy
12617 1

[程序分享] ggplot2绘图入门系列之二:图层控制与直方图 [推广有奖]

  • 8关注
  • 95粉丝

一叶知秋

已卖:9095份资源

学科带头人

51%

还不是VIP/贵宾

-

TA的文库  其他...

计量经济与统计

SSCI、权威 论文写作及投稿经验

威望
1
论坛币
57142 个
通用积分
129.8721
学术水平
437 点
热心指数
492 点
信用等级
393 点
经验
68023 点
帖子
1586
精华
0
在线时间
2192 小时
注册时间
2005-3-10
最后登录
2026-1-7

初级热心勋章 初级信用勋章

楼主
kk22boy 发表于 2012-12-6 22:14:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
前文所述,ggplot2使用图层将各种图形元素逐步添加组合,从而形成最终结果。第一层必须是原始数据层,其中data参数控制数据来源,注意数据形式只能是数据框格式。aes参数控制了对哪些变量进行图形映射,以及映射方式,aes是Aesthetic的缩写。

下面我们来绘制一个直方图作为示例。数据集仍采取mpg,对hwy变量绘制直方图。首先加载了扩展包,然后用ggplot函数建立了第一层,hwy数据映射到X轴上;使用+号增加了第二层,即直方图对象层。此时p被视为一种层对象,使用summary函数可得到关于它的更多信息,print(p)命令即可进行绘图。

library(ggplot2)p <- ggplot(data = mpg,aes(x = hwy))p <- p + geom_histogram()summary(p)data: manufacturer, model, displ, year, cyl, trans,  drv, cty, hwy, fl, class [234x11]mapping:  x = hwyfaceting: facet_grid(. ~ ., FALSE)-----------------------------------geom_histogram:stat_bin:position_stack: (width = NULL, height = NULL)

上面的信息告诉我们,p对象含有两层,第一层数据层描述了变量和映射方式,第二层是直方图对象(geom_histogram),geom表示几何对象,它是ggplot中重要的图层控制对象,因为它负责图形渲染的类型。geom_histogram是图形渲染类型的一种,其它类型可参见官网

每个geom对象都需要有数据输入,数据可以从第一层中自动读取,也可以在aes参数中直接设置。而且每个geom还默认搭配某种统计变换(stat),geom_histogram的默认统计变换是stat_bin。它负责对数据进行分组计数。

下面我们尝试两种更为复杂的直方图,首先将数据按照year这个变量划分为两组,用不同的颜色绘制直方图,而且用频率而非计数来刻画Y轴,并添加密度曲线。
p <- ggplot(mpg,aes(hwy))
p + geom_histogram(position = 'identity',
    alpha=0.5,
    aes(y = ..density..,
    fill = factor(year))) +
    stat_density(geom = 'line',
    position = 'identity',
    aes(colour = factor(year)))


如果想将两个直方图分开绘制,也可以使用facet_grid参数,结果如下图所示。


另:在win系统中用ggplot2绘制直方图,其底部有难看的缺口。但在linux系统中正常,不知原因何在,望知情人士不吝赐教。

通过电子邮件发送BlogThis!共享给 Twitter共享给 Facebook



标签: ggplot2, 绘图



2 条评论:

  • 匿名6/13/2012 10:56 上午

    有一个问题请教,ggplot2画图用geom_xxx还可以理解,stat_xxx怎么也可以画图呢?geom和stat是什么关系呢?谢谢您!

    回复
    回复

    • 写长城的诗6/13/2012 4:35 下午

      有句口诀要牢记:每个geom中都内置了一个stat,每个stat中都内置了一个geom。呵呵,怎么理解呢?geom类基本上是展现数据的原始状况,但有时候不是的,比如直方图,它是做了分组汇总的,所以直方图里头就有一种统计变换。那么stat类基本上是展现数据提炼后的状况,那么提炼后用什么方式展现,就有一些选择,比如线条啊,点啊。比如回归线,它是一种stat,它内置的geom就是line。虽然geom和stat分工不同,但它们有紧密的联系,而且有时候可以做同样的事情。



      原帖地址:http://xccds1977.blogspot.com/2012/01/ggplot2_15.html












二维码

扫码加我 拉你入群

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

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

关键词:ggplot2 gplot 绘图入门 plot 直方图 直方图

已有 2 人评分学术水平 热心指数 信用等级 收起 理由
风敲竹 + 5 + 5 + 5 观点有启发
epoh + 3 + 3 + 3 精彩帖子

总评分: 学术水平 + 8  热心指数 + 8  信用等级 + 8   查看全部评分

如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!

沙发
dsk2012 发表于 2012-12-8 22:35:58
看看

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 18:30