导入所需包
install.packages("tidyverse")
library(tidyverse)
绘图模板:
ggplot(data = ) +
(mapping = aes( ))
【注】ggplot()的第一个参数是要在图中使用的数据集,函数 geom_point() 向图中添加一个点层,这样就可以创建一张散点图。mapping 参数总是与 aes() 函数成对出现,aes() 函数的参数分别指定了映射到 x 轴的变量与映射到 y 轴的变量。
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))
①将图中的图形属性映射为数据集中的变量,可以传达出数据的相关信息。例如,可以将点的颜色映射为变量class,从而揭示每辆汽车的类型:
##颜色##
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy, color = class))
###大小size = class;透明度 alpha = class ;形状 shape = class
②为几何对象设置图形属性,需将其作为几何对象函数的一个参数,需要在aes( )函数的外部进行设置。
geom_bar( )条形图 ;geom_boxplot( ) 箱线图
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
③facet_wrap( )函数可通过单个变量对图进行分面,第一个参数是一个公式,创建公式的方式是在~符号后面加一个变量名。
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_wrap(~ class, nrow = 2)
④通过两个变量对图进行分面,需要在绘图命令中加入facet_grid( )函数,函数的第一个参数也是一个公式,但该公式包含由 ~ 隔开的两个变量名。
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(drv ~ cyl)
⑤更改几何对象:曲线
ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ, y = hwy))
⑥按不同线型分类画出不同的曲线:
ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))
## 按组分类group = drv; 按颜色分类color = drv
⑦在同一张图中显示多个几何对象,可以向ggplot()函数中添加多个几何对象函数:
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
geom_smooth(mapping = aes(x = displ, y = hwy))
• 避免代码重复,可将一组映射传递给ggplot( )函数:
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point( ) +
geom_smooth( )
⑧为不同的图层指定不同的数据:
如果将映射放在几何对象函数中,那么ggplot2会将其看作这个图层的局部映射,它将使用这些映射扩展或覆盖全局映射,但仅对该图层有效。这样一来,我们就可以在不同的图层中显示不同的图形属性。
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point(mapping = aes(color = class)) +
geom_smooth()
⑨geom_bar( )条形图:
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut))
### 几何对象函数和统计变换函数可以互换使用,可以使用stat_count( )替换 geom_bar( ),
###来重新生成前面那张图。
表示比例(而不是计数)的条形图:
ggplot(data = diamonds) +
geom_bar(
mapping = aes(x = cut, y = ..prop.., group = 1)
)
• 检查连续变量的分布,可以使用直方图geom_histogram( ),用 binwidth 参数来设定直方图中间隔的宽度:
ggplot(data = diamonds) +
geom_histogram(mapping = aes(x = carat), binwidth = 0.5)
⑩stat_summary( )函数为x的每个唯一值计算y值的摘要统计:
ggplot(data = diamonds) +
stat_summary(
mapping = aes(x = cut, y = depth),
fun.ymin = min,
fun.ymax = max,
fun.y = median
)
11)可以使用color= 或者 fill=(这个更有用)图形属性来为条形图上色:
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, color = cut))
###如果将fill图形属性映射到另一个变量(如 clarity),那么条形会自动分块堆叠起来,
###每个彩色矩形表示 cut 和 clarity 的一种组合。
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut, fill = clarity))
12)避免散点图重叠,利用position = "jitter"可以为每个数据点添加一个很小的随机扰动,这样就可以将重叠的点分散开来:
ggplot(data = mpg) +
geom_point(
mapping = aes(x = displ, y = hwy),
position = "jitter"
)
13)coord_flip( )函数可以交换x轴和y轴:
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
geom_boxplot()
####
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
geom_boxplot( ) +
coord_flip( )
14)geom_abline( )函数
abline(a,b) 表示画一条y=ax+b的直线
abline(y) 表示画一条过所有点的水平直线
abline(v=x) 表示画一条过所有点的竖直直线
abline(lm,obj) 表示画出线性模型得到的线性方程
**向前面的代码模板中添加位置调整、统计变换、坐标系和分面:
ggplot(data = ) +
mapping = aes(
stat =
position =
) +