暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言绘图|基础绘图系统

1021
点击关注了解更多哦

利用R语言中自带的基础绘图系统能够快速绘制出一些基本图形,有助于快速了解数据基本结构。本文主要对R语言中的基础绘图函数做一些总结,主要内容如下:

目录
  • 1.散点图(plot)
  • 2.折线图(plotlines)
  • 3.条形图(barplot)
  • 4.直方图(hist)
  • 5.箱线图(boxplot)
  • 6.密度图(plot(density))
  • 7.小提琴图(vioplot)
  • 8.饼图(pie)
  • 9.热图(heatmap)
  • 10.图形组合(par)

1、散点图(plot)

使用R自带的mtcars数据集来绘制散点图。此外,关于如何利用ggplot2绘制更多形式的散点图及添加回归拟合曲线可参考R语言绘图|散点图与回归拟合曲线,关于散点图矩阵的绘制可参考R语言绘图|散点图矩阵

head(mtcars) #查看数据集
#                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

1.1 基础散点图

plot(mtcars$mpg, mtcars$hp#plot(x,y)

1.2 进一步修饰

plot(mtcars$mpg, mtcars$hp, pch = 17, cex = 1, font = 2, 
     col = "red", col.axis = "blue", col.lab = "purple", col.main = "black",
     xlab = "mpg", ylab = "hp", sub = "微信", main = "散点图")

参数解读:散点图需要指定一个x轴变量与一个y轴变量,其中第一个参数为x,第二个参数为y,pch为点的类型,cex表示绘图符号相对于默认大小的缩放倍数,col表示绘图颜色,col.axis为坐标轴刻度文字颜色,col.lab为标签颜色,col.main为标题颜色,xlab为x轴标题,ylab为y轴标题,main为图标题。下图为R中内置的点符号类型:

2、折线图(plot或lines)

使用R自带的pressure数据集来绘制折线图。此外,关于如何利用ggplot2来绘制折线图可参考R语言绘图|折线图与面积图绘制

head(pressure)
#  temperature pressure
#1           0   0.0002
#2          20   0.0012
#3          40   0.0060
#4          60   0.0300
#5          80   0.0900
#6         100   0.2700

2.1基础折线图

type = "l" 为折线图(注意是英文字母l[line]而不是数字1),type = "p" 为散点图,type = "b" 为折线图上叠加散点图,lwd为线的宽度,lty为线的类型。

plot(pressure$temperature, pressure$pressuretype = "l"#左图
plot(pressure$temperature, pressure$pressuretype = "l", lwd= 3,lty = 5) #右图

2.2 生成带标记点的折线图

#方法一:左图,先绘制一个折线图,再叠加一个散点图
plot(pressure$temperature, pressure$pressuretype = "l"
points(pressure$temperature, pressure$pressure)
#方法二,右图,直接通过控制type参数来绘制
plot(pressure$temperature, pressure$pressuretype = "b"

2.3 绘制多条折线图

先绘制一条基础折线图,然后使用line() 函数及point() 函数进行图层叠加。

plot(pressure$temperature, pressure$pressuretype = "b", col = "blue")
lines(pressure$temperature, pressure$pressure/2, col ="red")
points(pressure$temperature, pressure$pressure/2, col ="red")
lines(pressure$temperature, pressure$pressure/3, col ="black")
points(pressure$temperature, pressure$pressure/3, col ="black")

下图为绘图过程中常用的线类型

3、条形图(barplot)

使用R自带的mtcars数据集来绘制条形图。此外,关于如何利用ggplot2来绘制条形图及面积图可参考R语言绘图|条形图绘制

table(mtcars$cyl#频数统计
# 4  6  8 
#11  7 14
barplot(table(mtcars$cyl)) #绘制频数统计条形图

4、直方图(hist)

使用R自带的mtcars数据集来绘制直方图。

hist(mtcars$mpg#左图
hist(mtcars$mpg, breaks = 15) #设置间距,右图

5、箱线图(boxplot)

使用R自带的mtcars数据集来绘制箱线图。此外,关于如何利用ggplot2绘制多变量及分组、分面箱线图可参考R语言绘图|箱线图(多变量、分组、分面)

#基础箱线图(左图)
boxplot(mtcars$drat, xlab = "drat"
#多个变量箱线图(中图)
boxplot(mtcars$drat, mtcars$wt, names = c("drat""wt"))
#根据某个变量的因子水平绘制箱线图(右图)
boxplot(mtcars$mpg ~ mtcars$cyl, xlab = "cyl", ylab = "mpg")

6、密度图(plot(density))

使用R自带的mtcars数据集来绘制密度图。此外,关于如何利用R语言绘制多期密度图可参考R语言绘图 | 多期核密度图绘制,关于如何利用Stata绘制多期密度图可参考Stata绘图 | Stata绘制多期(年)核密度图

6.1 基础密度图

dens <- density(mtcars$hp)
plot(dens)

6.2 绘制带有填充色的密度图

plot(dens, frame = TRUE, col = "steelblue",  main = "Density plot of mpg")
polygon(dens, col = "pink")

7、小提琴图(vioplot)

利用vioplot[1]包及R自带的mtcars数据集来绘制小提琴图。此外,关于vioplot的更多用法可参考R语言绘图|多变量箱线图(boxplot)与小提琴图(vioplot)的绘制

#install.packages("vioplot")
library(vioplot)
#基础小提琴图(左图)
vioplot(mtcars$mpg, names = "mpg")
#多个变量小提琴图(中图)
vioplot(mtcars$drat, mtcars$wt, names = c("drat""wt"))
#根据某个变量的因子水平绘制小提琴图(右图)
vioplot(mtcars$mpg ~ mtcars$cyl, xlab = "cyl", ylab = "mpg")

8、饼图(pie)

使用gcookbook包中的climate数据集来绘制饼图。

8.1 加载相关package与读取数据

#install.packages("RColorBrewer")
#install.packages("gcookbook")
library(RColorBrewer)
library(gcookbook)
head(climate)
#    Source Year Anomaly1y Anomaly5y Anomaly10y Unc10y
#1 Berkeley 1800        NA        NA     -0.435  0.505
#2 Berkeley 1801        NA        NA     -0.453  0.493
#3 Berkeley 1802        NA        NA     -0.460  0.486
#4 Berkeley 1803        NA        NA     -0.493  0.489
#5 Berkeley 1804        NA        NA     -0.536  0.483
#6 Berkeley 1805        NA        NA     -0.541  0.475

8.2 绘制基础饼图

主要参数:radius:半径;clockwise:顺时针;col颜色;main:图标题。

type <- table(climate$Source#统计Source频次
#基础
pie(type#
#对饼图要素做进一步修饰
pie(type, radius = 1, clockwise = TRUE, col = brewer.pal(3, "Set3"), cex = 0.75, main = "来源分布")

8.3 将比例添加进标签

#计算比例
type.prop <- round(prop.table(table(climate$Source))  * 100, digits = 2)
#标签向量
label <- c("Berkeley""CRUTEM3""NASA")
#绘图
pie(type, labels = paste(label,"\n",type.prop, "%", sep=""), cex = 1,
    radius = 1, clockwise = TRUE, col = brewer.pal(3, "Set3"), main = "来源分布")

9、热图(heatmap)

使用矩阵数据来绘制热图。此外,关于热图绘制的更多方法,如利用gplotspheatmapd3heatmapComplexHeatmap等R包绘制热图,可进一步参考R语言绘图|一行代码绘制热图(heatmap)

9.1 生成矩阵

set.seed(123) #设置随机种子
data <- data.frame(
  A = sample(c(0:10), 20, replace = T),
  B = sample(c(0:10), 20, replace = T),
  C = sample(c(0:10), 20, replace = T),
  D = sample(c(0:10), 20, replace = T),
  E = sample(c(0:10), 20, replace = T),
  G = sample(c(0:10), 20, replace = T),
  H = sample(c(0:10), 20, replace = T),
  I = sample(c(0:10), 20, replace = T)
)
mydata <- as.matrix(data) #数据库转化为矩阵
heatmap(mydata) #绘制绘图

9.2 重设颜色。利用RColorBrewer包中colorRampPalette() 函数返回一组渐变色,用于热图配色。

#install.packages("RColorBrewer")
library(RColorBrewer)
col <- colorRampPalette(brewer.pal(8, "Blues"))(8)
heatmap(mydata, col = col)

10、图形组合

使用par() 函数可将多个基础图形组合到一起,如par(mfrow = c(1,3)) 为1行3列,par(mfcol = c(1,3)) 为1列3行。

par(mfrow = c(2,3)) #2行3列
plot(pressure$temperature, pressure$pressure)
plot(pressure$temperature, pressure$pressuretype = "b")
boxplot(mtcars$drat, xlab = "drat")
vioplot(mtcars$mpg, names = "mpg")
hist(mtcars$mpg)
plot(density(mtcars$hp))
par(mfrow = c(1,1)) #返回默认设置

总结

关于R基础绘图系统中的绘图函数可以进一步阅读帮助文档,如想查看热图的更多信息,可在控制台输入 ?heatmaphelp(heatmap) 来查看更多关于热图的绘图参数。

heatmap(x, Rowv = NULL, Colv = if(symm)"Rowv" else NULL,
        distfun = dist, hclustfun = hclust,
        reorderfun = function(d, w) reorder(d, w),
        add.expr, symm = FALSE, revC = identical(Colv, "Rowv"),
        scale = c("row""column""none"), na.rm = TRUE,
        margins = c(5, 5), ColSideColors, RowSideColors,
        cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc),
        labRow = NULL, labCol = NULL, main = NULL,
        xlab = NULL, ylab = NULL,
        keep.dendro = FALSE, verbose = getOption("verbose"), ...)


如有帮助请多多点赞哦!

参考资料

[1]

vioplot: https://cran.r-project.org/web/packages/vioplot/index.html




文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论