第六章: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")
相关推荐
Lizhihao_5 分钟前
JAVA-队列
java·开发语言
远望清一色23 分钟前
基于MATLAB边缘检测博文
开发语言·算法·matlab
何曾参静谧31 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices35 分钟前
C++如何调用Python脚本
开发语言·c++·python
我狠狠地刷刷刷刷刷1 小时前
中文分词模拟器
开发语言·python·算法
wyh要好好学习1 小时前
C# WPF 记录DataGrid的表头顺序,下次打开界面时应用到表格中
开发语言·c#·wpf
AitTech1 小时前
C#实现:电脑系统信息的全面获取与监控
开发语言·c#
qing_0406031 小时前
C++——多态
开发语言·c++·多态
孙同学_1 小时前
【C++】—掌握STL vector 类:“Vector简介:动态数组的高效应用”
开发语言·c++
froginwe111 小时前
XML 编辑器:功能、选择与使用技巧
开发语言