散点图是将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定,每个点对应一个 X 和 Y 轴点坐标。散点图可以用R自带的plot()函数绘制,也可以用ggplot2包的geom_point()和 geom_dotplot()函数来绘制,当使用geom_dotplot()绘图时,point的形状是dot,不能改变点的形状,因此,geom_dotplot 叫做散点图(Scatter Plot),通过绘制点来呈现数据的分布,对点分箱的方法有两种:点密度(dot-density )和直方点(histodot)。当使用点密度分箱(bin)方式时,分箱的位置是由数据和binwidth决定的,会根据数据进行变化,但不会大于binwidth指定的宽度;当使用直方点分箱方式时,分箱有固定的位置和固定的宽度,就像由点构成的直方图(histogram)。
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: 空图。
案例
# 创建数据
data = data.frame(
x=seq(1:100) + 0.1*seq(1:100)*sample(c(1:10) , 100 , replace=T),
y=seq(1:100) + 0.2*seq(1:100)*sample(c(1:10) , 100 , replace=T)
)
# 基本散点图
plot(x=data$x, y=data$y)
美化后的散点图
plot(x=data$x, y=data$y, type="p",
xlab="地下生物量 (g/m^2)",
ylab="地上生物量(g/m^2)",
main="地上生物量与地下生物量间关系",
xlim=c(0, 200),
ylim=c(0, 300))
散点图矩阵
散点图矩阵是借助两变量散点图的作图方法,它可以看作是一个大的图形方阵,其每一个非主对角元素的位置上是对应行的变量与对应列的变量的散点图。而主对角元素位置上是各变量名,这样,借助散点图矩阵可以清晰地看到所研究多个变量两两之间的相关关系。散点图矩阵就是把数据集中的每个数值变量两两绘制散点图,这里我们用pairs()函数绘制。
pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",
pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
把直方图放在对角线上
panel.hist <- function(x, ...)
{
usr <- par("usr"); on.exit(par(usr))
par(usr = c(usr[1:2], 0, 1.5) )
h <- hist(x, plot = FALSE)
breaks <- h$breaks; nB <- length(breaks)
y <- h$counts; y <- y/max(y)
rect(breaks[-nB], 0, breaks[-1], y, col = "cyan", ...)
}
pairs(USJudgeRatings[1:5], panel = panel.smooth,
cex = 1.5, pch = 24, bg = "light blue", horOdd=TRUE,
diag.panel = panel.hist, cex.labels = 2, font.labels = 2)
geom_point()函数绘制
geom_point()函数用于创建散点图。散点图对于显示两个连续变量之间的关系最有用。它可以用于比较一个连续变量和一个类别变量,或者两个类别变量,但是像geom_jitter()、geom_count()或geom_bin2d()这样的变体通常更合适。气泡图是一个散点图,第三个变量映射到点的大小。
#安装ggplot2包
install.packages("ggplot2")
#调用ggplot2包
library(ggplot2)
#绘制散点图
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
为散点图形添加不同颜色和性状的映射
p + geom_point(aes(colour = factor(cyl)))
p + geom_point(aes(shape = factor(cyl)))
绘制气泡形式的散点图
p + geom_point(aes(size = qsec))
#绘制一个根据物种设置颜色的散点图
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
geom_point(size=6) +
theme_bw()
#散点图的美化
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
geom_point(size=6) +#设置点大小
theme_bw()+#去除灰色背景
xlab("Sepal.Length") + #设置x轴标题
ylab("Sepal.Width")+#设置y轴标题
theme(axis.text.x = element_text(size = 12, color = "black"))+##设置x轴字体大小
theme(axis.text.y = element_text(size = 12, color = "black"))+##设置y轴字体大小
theme(title=element_text(size=14))##设置x轴和y轴标签字体大小
参考文献
https://www.r-graph-gallery.com/