第六章:R语言绘图 第一节:绘图基础

以plot函数为例,plot函数默认画出散点图,例如以下代码

R 复制代码
# Input data for drug example
dose  <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
plot(dose, drugA, type="b")
#plot一般常见参数为(x,y,type)
#type中的参数 "p"表示散点图, "l"表示线条, "b"表示同时显示散点和线条, "c"表示通过线条连接的空心点, "o"表示覆盖的散点和线条, "s"和"S"表示阶梯状线条, "h"表示类似直方图的垂直线条。"n"不生成任何点或线条。

额外:par()函数

通过函数par()来指定选项。说人话就是创建一个图形参数的副本,以便能够随时还原该图形样式,以这种方式设定的参数值除非被再次修改,否则将在会话结束前一直有效。其调用格式为:

R 复制代码
par(optionname=value,optionname=name,...)

不加参数地执行par()将生成一个含有当前图形参数设置的列表。添加参数no.readonly=TRUE可以生成一个可以修改的当前图形参数列表。

例如:

R 复制代码
opar <- par(no.readonly=TRUE) # 生成一个副本
par(lty=2, pch=17)            # 改变图片参数
plot(dose, drugA, type="b")   #绘图

当我们执行原本创建的副本参数后,图片会被还原

R 复制代码
par(opar)  #将图形参数还原
plot(dose, drugA, type="b")

常用图形设置

(一)线条和符号

例如:

R 复制代码
plot(dose, drugA, type="b", lty=3, lwd=3, pch=15, cex=2)

(二)颜色

例如:

R 复制代码
# 创建示例数据
data <- c(10, 20, 15, 25, 30)

# 绘制柱状图并指定填充颜色
barplot(data,col="yellow")

(三)文本属性

例如:

R 复制代码
par(cex.axis=.75,cex.lab=0.5)

发现相对于原本的图,这里面坐标轴的标签刻度都缩小了

同时,我们也可以用font系列函数指定字体族、字号和字样

例如

R 复制代码
par(font.axis=4,font.lab=4) #均设置为粗斜体

(四)图形尺寸和边界尺寸

例如

R 复制代码
par(pin=c(2, 3))
R 复制代码
# 设置图形边缘尺寸
par(mai = c(1, 1, 1, 1))  # 设置绘图区域的边缘尺寸为1英寸,分别对应上、右、下、左边缘
par(mar = c(3, 3, 2, 2))  # 设置整个图形设备的边缘尺寸为3英寸,分别对应上、右、下、左边缘

# 绘制散点图
plot(x, y, type = "b", pch = 19, col = "blue")

(五)添加文本、自定义坐标轴和图例

1.可使用title()函数为图形添加标题和坐标轴标签,调用格式:

title()函数:

  • main参数用于指定主标题。
  • sub参数用于指定副标题。
  • xlab参数用于指定x轴标签。
  • ylab参数用于指定y轴标签
R 复制代码
x <- 1:10
y <- x^2

plot(x, y, type = "b", pch = 19, col = "blue",xlab = "", ylab = "")
#定义新坐标轴名称时,原来的坐标轴名称需要变为空,否则会导致的新旧坐标轴重合
title(main = "Scatter plot of x and y",
      sub = "Relationship between x and y",
      xlab = "X values",
      ylab = "Y values")

2.可以使用函数axis()来创建自定义的坐标轴,而非使用R中的默认坐标轴,其格式为:

  1. axis()函数:
    • side参数用于指定坐标轴的位置(1:底部,2:左侧,3:顶部,4:右侧)。
    • at参数用于指定刻度线的位置。
    • labels参数用于指定刻度线的标签。
    • 其他参数如posltycollastck等可根据需要进行设

例如:

R 复制代码
x <- c(1:10)
y <- x
z <- 10/x
opar <- par(no.readonly=TRUE)  # make a copy of current settings
par(mar=c(5, 4, 4, 8) + 0.1)
plot(x, y, type="b",
     pch=21, col="red",
     yaxt="n", lty=3, ann=FALSE)
axis(2, at=x, labels=x, col.axis="red", las=2)
axis(4, at=z, 
     labels=round(z, digits=2),#将第二个y轴上的标签设置为z向量的四舍五入值,并将小数位数限制为两位
     col.axis="blue", las=2,#las代表旋转角度
     cex.axis=0.7, tck=-.01)

参数设置

3.函数abline()可以用来为图形添加参考线,其使用格式为:

R 复制代码
abline(h = yvalues, v = xvalues)

具体而言:

  • h参数用于指定水平参考线的位置,可以传入一个包含要绘制水平参考线位置的向量。
  • v参数用于指定垂直参考线的位置,同样可以传入一个包含要绘制垂直参考线位置的向量

例如

R 复制代码
x <- 1:10
y <- x^2

plot(x, y, type = "b", pch = 19, col = "blue")

# 添加水平参考线
abline(h = c(20, 40, 60), col = "red", lty = 2)

# 添加垂直参考线
abline(v = c(3, 6, 9), col = "green", lty = 3)

4.我们可以使用函数legend()来添加图例,其使用格式为: legend(location,

title, legend, ...)

例如

R 复制代码
x <- 1:10
y1 <- x^2
y2 <- 2*x

plot(x, y1, type = "b", pch = 19, col = "blue", ylim = c(0, max(y1, y2)))
lines(x, y2, type = "b", pch = 21, col = "red")

# 添加图例
legend("topleft", title = "Legend", legend = c("y = x^2", "y = 2x"), col = c("blue", "red")

参数设置

5.text()函数用于向绘图区域内部添加文本。它可以在指定的(x, y)坐标位置添加文本,并可以通过其他参数设置文本的颜色、大小、字体等属性

例如:

R 复制代码
x <- 1:10
y <- x^2

plot(x, y, type = "b", pch = 19, col = "blue")

# 在指定位置添加文本
text(5, 50, "Some Text", col = "red", cex = 1.2)

6.mtext()函数用于向图形的边缘添加文本。它可以在指定边缘(上、右、下、左)的指定位置添加文本,并可以通过其他参数设置文本的颜色、大小、字体等属性。

例如

R 复制代码
x <- 1:10
y <- x^2

plot(x, y, type = "b", pch = 19, col = "blue")

# 在右边界上方添加文本
mtext("Right Text", side = 4, line = 2, col = "red", cex = 1.2)

7.par()函数中使用图形参数 mfrow=c(nrows,ncols) 来创建按行填充的、行数为

nrows、列数为ncols的图形矩阵。另外,可以使用 mfcol=c(nrows,ncols) 按列填充矩阵

例如:

R 复制代码
x <- 1:10
y <- x^2

# 创建按行填充的图形矩阵
par(mfrow = c(2, 2))

plot(x, y, type = "b", pch = 19, col = "blue", main = "Plot 1")
hist(x, main = "Histogram")
boxplot(x, main = "Boxplot")
barplot(x, main = "Barplot")
R 复制代码
# 创建按列填充的图形矩阵
par(mfcol = c(2, 2))

plot(x, y, type = "b", pch = 19, col = "blue", main = "Plot 1")
hist(x, main = "Histogram")
boxplot(x, main = "Boxplot")
barplot(x, main = "Barplot")
相关推荐
Kisorge1 小时前
【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数
c语言·开发语言
轻口味2 小时前
命名空间与模块化概述
开发语言·前端·javascript
晓纪同学3 小时前
QT-简单视觉框架代码
开发语言·qt
威桑3 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服3 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生3 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生3 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans3 小时前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手3 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Chinese Red Guest4 小时前
python
开发语言·python·pygame