R语言基础
R语言之前有点基础,对于安装、中文用户名、还有更新都有痛的领悟,这里就不再做笔记了
下面的内容是R for data science里ggplot绘图基础内容
涉及到的R包有:ggplot2
数据:R内置的mpg
mpg
# A tibble: 234 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
7 audi a4 3.1 2008 6 auto(av) f 18 27 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 audi a4 quattro 2 2008 4 manual(m6) 4 20 28 p compact
# ... with 224 more rows
ggplot绘图基本结构
ggplot(data = <DATA>) +
<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))
在图形上添加变量
重要的概念:图形属性映射,就是将你要在图片上体现的变量,用不同的图形属性表现出来,比如,你已经用xy轴来定义所有汽车的引擎大小和燃油效率,是用散点图的形式展现,图片上所有的点代表所有的汽车,但是你想让汽车种类在图上也有所体现,这时候就想用图片的颜色来区分不同的汽车种类,或者用形状、大小来区分也可以。简而言之:将变量信息通过图形的可视化属性展现出来。
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy, color = class))
aes是将变量信息和图形属性相连接,如果要改变整个图形的外观,需要放在aes括号外。
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
另一种添加变量的方式是分面
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_wrap(~ year, nrow = 2)
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(drv ~ cyl) ##drv放在y轴,cyl放在x轴,下图
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(. ~cyl) ###cyl在x轴
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(drv~ .) ##drv在轴
几何对象
指我们表示数据的几何对象类型,如条形图使用条形几何图像
ggplot(data=mpg)+
geom_smooth(mapping = aes(x=displ,y=hwy,linetype=drv)
如果想要得到这个图形:
刚开始自己写的
ggplot(data=mpg)+
geom_smooth(mapping = aes(x=displ,y=hwy,linetype=drv,color=drv))+
geom_point(mapping = aes(x=displ,y=hwy,color=drv))
或者
ggplot(data=mpg,mapping=aes(x=displ,y=hwy,color=drv))+
geom_point()+
geom_smooth(mapping = aes(linetype=drv))