R语言自学笔记:作图基础(plot、ggplot)

一.plot

1. 使用plot以散点图为例

系统自带的函数,用于作图,例如对mtcars中某两列的数据绘制散点图。

> with(mtcars,plot(mpg, wt, type = "p", main = "Example",
+ sub = "relation between wt and mpg",
+ xlab = "mpg", ylab = "wt", col = "blue",
+ xlim = range( mpg ), ylim = range( wt ),
+ pch = 10, frame.plot = F))

R语言自学笔记:作图基础(plot、ggplot)_第1张图片

注:pch对应的是散点的形状;type对应不同的作图类型,例如‘p’代表完全的散点图

作图完毕后,还可以用以下几个函数对其进行数据内容的扩充,使用方法为:+(函数):

points : 点图
lines : 线图
abline : 直线
polygon : 多边形
legend : 图例
title :标题
axis :

会在已作的图片上加上补充的内容。

2. 参数及参数的调整

par() 函数:显示或修改当前 图形设备 的参数,及系统默认的参数而非某个图形变量的参数。用以下命令查看支持的内容,所以可以在修改par()值之前可以将其赋给另一个变量从而防止信息丢失
save <- par(); 

## reload
par( oldpar );

(1) mar

可以通过par(mar = ....),向mar内部输入含有四个数值的向量,分别代表下左上右的边距。

(2) mfrow

修改连续作图时的排布情况:

> par(mfrow = c(3,1))
> for (i in 1:3) {
+     plot(1:10)

R语言自学笔记:作图基础(plot、ggplot)_第2张图片

(3) 图形设备设置

图形设备即为指图形输出的设备,可以理解为输出图片保存格式,如:png、jpg。

pdf( file = "/path/", height = , width =  )
## 作图操作 ##
dev.off() ##关闭设备,返回最近的使用的一个设备

二. ggplot

ggplot的基础由四个概念(部分)组成:图层、绘图设计、坐标轴控制和分面。ggplot是一个强大的绘图工具,除内部整合的各种参数和函数,许多包也与之有配合,使用时记忆难度较高。自学时只为快速上手,简单记录一下几个基本的图像的画法和几个基本函数的使用。

1.  基本参数

ggplot的help()内容基本如下:

Description
ggplot() initializes a ggplot object. It can be used to declare the input data frame for a graphic and to specify the set of plot aesthetics intended to be common throughout all subsequent layers unless specifically overridden.

Usage
ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())

Arguments
data	
Default dataset to use for plot. If not already a data.frame, will be converted to one by fortify(). If not specified, must be supplied in each layer added to the plot.

mapping	
Default list of aesthetic mappings to use for plot. If not specified, must be supplied in each layer added to the plot.

...	
Other arguments passed on to methods. Not currently used.

environment	
DEPRECATED. Used prior to tidy evaluation.

使用时函数的基本使用方法如下:

ggplot(dataframe, aes(x = ..., y = ..., color = ..., fill = ..., 以及各种与mapping相关的参数) )

x = 控制x轴内容

y = 控制y轴内容

color = 控制颜色

...

注意,在aes()中,所有的内容的分配都是将变量视为factor,依据其level来发挥功能。

例如:

> ggplot(mtcars,aes(x = rownames(mtcars),y = mpg,color = cyl , fill = cyl))+
    geom_histogram(stat= "identity")

R语言自学笔记:作图基础(plot、ggplot)_第3张图片

 由图可见,fill和color的判别是通过cyl的levels来决定的,更加直观第可以写为:

ggplot(mtcars,aes(x = rownames(mtcars),y = mpg, fill = factor(cyl)))+geom_histogram(stat= "identity")

R语言自学笔记:作图基础(plot、ggplot)_第4张图片

同时,对于坐标而言,修改x轴对应的数据的factor的顺序可以直接改变图中各个值的顺序。

2. 图层(geom_...)

(1) geom_point , geom_line : 点线图
(2) geom_smooth : 曲线图,可以使用method函数对曲线内容进行分析作图,例如:method = lm,即对所有数据点进行线性回归分析;
(3) geom_bar bar
其中有参数position,可以修改bar的位置:
ggplot(mtcars,aes(x = cyl,y = wt, fill = rownames(mtcars)))+
    geom_bar(stat= "identity",position = "stack")
R语言自学笔记:作图基础(plot、ggplot)_第5张图片

ggplot(mtcars,aes(x = cyl,y = wt, fill = rownames(mtcars)))+
    geom_bar(stat= "identity",position = "dodge")

R语言自学笔记:作图基础(plot、ggplot)_第6张图片

(4) geom_histogram : 直方图
(5) geom_boxplot : 箱线图
(6) geom_density:数据的分布密度图
(7) geom_path : geom_line 相似,可以制作其它复杂图形
(8) geom_text:添加文字
在添加过程中,需要映射(mapping)文字对应的x轴和y轴关系(默认是当作图中的x轴和y轴),用label参数添加内容。在一般添加内容到相应位置时,需要预先计算一下所在的位置,以位置组成的df来对geom_text进行映射。
ggplot(income.dat, aes(x = income.predict, y = income))+
  geom_point(size = 2) +
  geom_text(data = NULL, aes(x = 8, y = 8), parse = T, label = R2 )+ ##在8,8处写上一个R2。label需要输入的是一个字符类型的变量
  geom_abline(intercept = 0, slope = 1, colour = "red")

(9) geom_title:设置标题
(10) xlab\ylab:设置坐标轴的轴相关文字
(11) geom_abline:绘制直线:
例如绘制一条斜率为1,截距为0的直线
geom_abline(intercept = 0, slope = 1, colour = "red")
...
3. 绘图设计(scale_相关,简单介绍几个和颜色相关的函数)
(1) scale_color_brewer
>mtcars %>% ggplot( aes(wt, mpg) ) + geom_point( aes( color = factor(cyl) ) ) +
+     scale_color_brewer( palette = "Set2" )

使用自带的set:

R语言自学笔记:作图基础(plot、ggplot)_第7张图片

 (2) scale_colour_manual()

可以设置关注数据的颜色,以break来呈现对数据的不同levels的划分。

> mtcars %>% ggplot( aes(wt, gear) ) + geom_point( aes( color = factor(gear) ) ) +
    scale_color_manual( breaks = c("3","4"), values = c("pink","yellow","blue","green") )

R语言自学笔记:作图基础(plot、ggplot)_第8张图片

(3) scale_colour_gradient()

scale_colour_gradient(
...,
low = 颜色渐变区间,
high = 颜色渐变区间,
space = "Lab",
na.value = na值对应颜色,
guide = "colourbar",
aesthetics = "colour"
)

或是直接在里面输入参数 color = c(颜色1,颜色2,颜色3...)以达到不同颜色连续渐变的效果。

4. 绘图分面(facet)

下面介绍介绍几个能够控制facet的函数

(1) 使用cowplot包的plot_grid() 函数

plot_grid(plot1,plot2,plot3,ncol = 2,labels = c('A','B','C','D'))

给plot1~4这四个图片汇总在一起,以两列的矩阵的形式,同时分别冠上标签ABCD

(2) 使用patchwork包的plot_layout()函数

可以向函数内部输送“简易”的排布顺序,下图所示的以plot1位于最上,plot2~3分居其下左右的一个分布:

plot_layout(plot1 / (plot2 | plot3))

或是直接输入分布矩阵(layout matrix),详细见官网:https://patchwork.data-imaginist.com

你可能感兴趣的:(r语言)