先前写过几篇用ggplot2进行基本绘图的文章,但对于初学者,或只需绘制简单图形时,这些命令显得繁琐,这里介绍ggplot2中的快速绘图函数qplot(). 此函数相对能较快速便捷地绘制图形。
往期文章:
张光耀:ggplot2数据包画图系列1(散点图)zhuanlan.zhihu.com![f5aa4ca6bd7408ecaba384e2c58b1737.png](https://i-blog.csdnimg.cn/blog_migrate/658f6df589cf8d4cd65f2ece689a518f.jpeg)
![a2c6c6f4dde650c31fdcd9a43356939f.png](https://i-blog.csdnimg.cn/blog_migrate/e01f6e71c5fbafc63624853dac81421e.png)
![4444ee3b4bea0ad1ecb0707c163deab6.png](https://i-blog.csdnimg.cn/blog_migrate/1a5813068b04b2915d9a219a57be2561.png)
![75985cecb644f56e66262cfff75d46aa.png](https://i-blog.csdnimg.cn/blog_migrate/dfbb39cffcbdfb8b71099858829ad1cf.png)
首先说一下qplot()中参数的含义:
qplot(x = , # 变量X
y = , # 变量Y
data = , # 某数据名(如果要根据某数据绘图)
color = , # 定义线的颜色和方块的边界颜色
fill = , # 定义方块的填充颜色
shape = , # 定义几何对象的形状
alpha = , # 定义透明度(范围0–1)
facets = , # 定义分面
margins = , # 是否显示分面后的列统计
geom = , # 定义几何对象
xlim = , # 定义X轴的范围
ylim = , # 定义Y轴的范围
log = , # 是否对X和Y进行对数转换
main = , # 定义主标题
xlab = , # 定义X轴标题
ylab = , # 定义Y轴标题
asp = , # 定义Y/X轴的比率
... = )
下面我以R中自带的mtcars数据,对各参数举例演示一下。
mtcars收集了32辆不同品牌车辆的指标信息,包括重量(wt),百公里耗油量(加仑)(mpg),变速器类型(am)等。
- simple start
qplot(x = wt, y = mpg, data = mtcars)
![c70fbd62fb5c042975023e237a30b220.png](https://i-blog.csdnimg.cn/blog_migrate/1fa4444a35d1ce0723735444b98bc9b4.png)
指定x和y后,默认绘图为散点图。
- color
qplot(x = wt, y = mpg, data = mtcars,
color = am)
![aac32283413bc09544399a4f87b62794.png](https://i-blog.csdnimg.cn/blog_migrate/7b3afd65ed4a4771566e9d2165d5f3d8.png)
这里用对不同变速器用不同的颜色来表示,但是变速器为0-1编码,默认为连续型变量,可以将其转化为因子型:
qplot(x = wt, y = mpg, data = mtcars,
color = factor(am))
![2acdf7b4cc1b845706a1533f2c783846.png](https://i-blog.csdnimg.cn/blog_migrate/17cd43f05db83edbdc916232558c58c7.png)
color也可以人为设置为某个颜色,但是需要注意,如果以下面的方式设置,其实是将blue当做一个变量,而不是一个颜色:
qplot(x = wt, y = mpg, data = mtcars,
color = 'blue')
![f4d7e5c7fe6ccf15e04d7158ec0f92c9.png](https://i-blog.csdnimg.cn/blog_migrate/b8228ae9ff6d5564bbdc2c462e5eacbf.png)
要想设置为蓝色,应该用I()函数来实现:
qplot(x = wt, y = mpg, data = mtcars,
color = I('blue'))
![807818d2d7b6d0865096db3aad746dfe.png](https://i-blog.csdnimg.cn/blog_migrate/7925add743329cb2215bec4af2f1dfd5.png)
- facet
qplot(x = wt, y = mpg, data = mtcars,
facets = ~am) # 按照变速器分面
![8d8dcd2732ceff2bf70bca15dffadde0.png](https://i-blog.csdnimg.cn/blog_migrate/743479c16dbdae0bd6b4f4723e320ced.jpeg)
qplot(x = wt, y = mpg, data = mtcars,
facets = cyl~am) # 按照气缸数和变速器分面,气缸数为行分面,变速器为列分面
![901c782c9253da390d022831fe982d81.png](https://i-blog.csdnimg.cn/blog_migrate/63cf161f18306e702d88572429e9abef.jpeg)
qplot(x = wt, y = mpg, data = mtcars,
facets = ~am*cyl) # 按照气缸数和变速器分面,气缸数和变速器都为列分面
![ecc9bc30f118f7325249e5ddb55322e9.png](https://i-blog.csdnimg.cn/blog_migrate/5565999bc748a556f499fc9bdebb9512.jpeg)
- margins
qplot(x = wt, y = mpg, data = mtcars,
facets = cyl~am,
margins = T) # 对行分面进行汇总
![c94a4769b99372eea522b4322e19d6ba.png](https://i-blog.csdnimg.cn/blog_migrate/de4e687d1e007567cd4d20922b1a6fe3.jpeg)
- geom
qplot(x = mpg, data = mtcars, geom = 'dotplot') # 点图
![01b148cd48a0db2d17089072e1769b67.png](https://i-blog.csdnimg.cn/blog_migrate/b05262841f7854e37e5dbb2fad91f203.png)
qplot(x = mpg, data = mtcars, geom = 'histogram')
![ba8bcdfc81e5a6cb73666fc98299b31d.png](https://i-blog.csdnimg.cn/blog_migrate/d1394d1b676b1e601edf8f583c19c04c.png)
qplot(x = wt, y = mpg, data = mtcars,
geom = 'line') # 折线
![eeebe7046a100f100d05c857883a5b12.png](https://i-blog.csdnimg.cn/blog_migrate/90812a95de7ebb5795b28a701933f8f1.png)
qplot(x = wt, y = mpg, data = mtcars,
geom = 'smooth') # 拟合曲线
![57bfe426c54d8250e1d27f790882b46b.png](https://i-blog.csdnimg.cn/blog_migrate/8cc8299a89405f36e5ad7bfe9ea96502.png)
qplot(x = wt, y = mpg, data = mtcars,
geom = c('point','line')) # 散点+折线
![39f32108574030187c3dd1bed684bd38.png](https://i-blog.csdnimg.cn/blog_migrate/65a70cc42a0745e35d35175f2df36f96.png)
- xlim & ylim
qplot(x = wt, y = mpg, data = mtcars)
qplot(x = wt, y = mpg, data = mtcars,
xlim = c(2,4), ylim = c(15,30))
![c70fbd62fb5c042975023e237a30b220.png](https://i-blog.csdnimg.cn/blog_migrate/1fa4444a35d1ce0723735444b98bc9b4.png)
![7a033b7b97b1d7e8752305587fa74f28.png](https://i-blog.csdnimg.cn/blog_migrate/d0f8a190f155ecfc6e66abf1a56ce24c.png)
- log
qplot(x = wt, y = mpg, data = mtcars,
log = 'x')
qplot(x = wt, y = mpg, data = mtcars,
log = 'xy')
![60ddf2700ce3e87a8db7ae8248ec25a4.png](https://i-blog.csdnimg.cn/blog_migrate/008c88a465af0609087bff22ebfd1394.png)
![e30244115828e55eabf5df30c5165089.png](https://i-blog.csdnimg.cn/blog_migrate/c6e5734bd4adb8a3e9dd7040fb6ac248.png)
- main & xlab & ylab
qplot(x = wt, y = mpg, data = mtcars,
main = 'Example of qplot()',
xlab = 'Weight',
ylab = 'Miles per gallon')
![4447b1003366f8ada84923d1de7ad5fe.png](https://i-blog.csdnimg.cn/blog_migrate/8bf3736d6c7d8e12dc8672e73f5821e2.png)
- asp
qplot(x = wt, y = mpg, data = mtcars,
asp = 2)
![0f19d789fc2a5074dc4534f16c900b4f.png](https://i-blog.csdnimg.cn/blog_migrate/893357ad1b62c316aa969780eaba1a60.png)
qplot(x = wt, y = mpg, data = mtcars,
asp = 1/2)
![79894f21eddc2422c0d8334d9bbef031.png](https://i-blog.csdnimg.cn/blog_migrate/d49d98cea1cee9f12b786266a48a5ed1.png)