R 绘图 - 散点图
散点图是将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定,每个点对应一个 X 和 Y 轴点坐标。
散点图可以使用 plot() 函数来绘制,语法格式如下:
plot(x, y, type="p", main, xlab, ylab, xlim, ylim, axes)
x 横坐标 x 轴的数据集合
y 纵坐标 y 轴的数据集合
- type:绘图的类型,p 为点、l 为直线, o 同时绘制点和线,且线穿过点。
main 图表标题。
xlab、ylab x 轴和 y 轴的标签名称。
xlim、ylim x 轴和 y 轴的范围。
axes 布尔值,是否绘制两个 x 轴。
type 参数可选择值:
- p:点图
- l:线图
- b:同时绘制点和线
- c:仅绘制参数 b 所示的线
- o:同时绘制点和线,且线穿过点
- h:绘制出点到横坐标轴的垂直线
- s:阶梯图,先横后纵
- S:阶梯图,先纵后竖
- n: 空图
创建一个简单的线图:
实例
x<-c(10,40)
y<-c(20,60)
# 生成 png 图片
png(file = "runnob-test-plot2.png")
plot(x, y, "l")
y<-c(20,60)
# 生成 png 图片
png(file = "runnob-test-plot2.png")
plot(x, y, "l")
创建一个简单的线图,type 使用 o 参数,同时绘制点和线,且线穿过点:
实例
x<-c(10,40)
y<-c(20,60)
# 生成 png 图片
png(file = "runnob-test-plot.png")
plot(x, y, "o")
y<-c(20,60)
# 生成 png 图片
png(file = "runnob-test-plot.png")
plot(x, y, "o")
接下来我们使用 R 语言的内置数据集 mtcars 来进行测试。
我们使用 mtcars 数据集的 wt 和 mpg 列:
实例
input <- mtcars[,c('wt','mpg')]
print(head(input))
print(head(input))
输出结果为:
wt mpgMazda RX4 2.620 21.0Mazda RX4 Wag 2.875 21.0Datsun 710 2.320 22.8Hornet 4 Drive 3.215 21.4Hornet Sportabout 3.440 18.7Valiant 3.460 18.1
接着我们使用以上数据生存一个散点图
:实例
# 数据
input <- mtcars[,c('wt','mpg')]
# 生成 png 图片
png(file = "scatterplot.png")
# 设置坐标 x 轴范围 2.5 到 5, y 轴范围 15 到 30.
plot(x = input$wt,y = input$mpg,
xlab = "Weight",
ylab = "Milage",
xlim = c(2.5,5),
ylim = c(15,30),
main = "Weight vs Milage"
)
input <- mtcars[,c('wt','mpg')]
# 生成 png 图片
png(file = "scatterplot.png")
# 设置坐标 x 轴范围 2.5 到 5, y 轴范围 15 到 30.
plot(x = input$wt,y = input$mpg,
xlab = "Weight",
ylab = "Milage",
xlim = c(2.5,5),
ylim = c(15,30),
main = "Weight vs Milage"
)
散点图矩阵
散点图矩阵是借助两变量散点图的作图方法,它可以看作是一个大的图形方阵,其每一个非主对角元素的位置上是对应行的变量与对应列的变量的散点图。而主对角元素位置上是各变量名,这样,借助散点图矩阵可以清晰地看到所研究多个变量两两之间的相关关系。
散点图矩阵就是把数据集中的每个数值变量两两绘制散点图。
R 语言使用以下函数创建散点图矩阵:
pairs(formula, data)
参数:
formula 变量系列
data 变量的数据集
实例
# 输出图片
png(file = "scatterplot_matrices.png")
# 4 个变量绘制矩阵,12 个图
pairs(~wt+mpg+disp+cyl,data = mtcars, main = "Scatterplot Matrix")
png(file = "scatterplot_matrices.png")
# 4 个变量绘制矩阵,12 个图
pairs(~wt+mpg+disp+cyl,data = mtcars, main = "Scatterplot Matrix")