下面我们来绘制一个直方图作为示例。数据集仍采取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 = hwy faceting: facet_grid(. ~ ., FALSE) ----------------------------------- geom_histogram: stat_bin: position_stack: (width = NULL, height = NULL)
每个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系统中正常,不知原因何在,望知情人士不吝赐教。
有一个问题请教,ggplot2画图用geom_xxx还可以理解,stat_xxx怎么也可以画图呢?geom和stat是什么关系呢?谢谢您!
回复删除有句口诀要牢记:每个geom中都内置了一个stat,每个stat中都内置了一个geom。呵呵,怎么理解呢?geom类基本上是展现数据的原始状况,但有时候不是的,比如直方图,它是做了分组汇总的,所以直方图里头就有一种统计变换。那么stat类基本上是展现数据提炼后的状况,那么提炼后用什么方式展现,就有一些选择,比如线条啊,点啊。比如回归线,它是一种stat,它内置的geom就是line。虽然geom和stat分工不同,但它们有紧密的联系,而且有时候可以做同样的事情。
删除跪求最后一个图的参数解释。多谢
回复删除在之前代码末尾增加一个 +facet_grid(year~.)
删除多谢博主,受益匪浅
回复删除