在绘图之前,先谈谈散点图需要的数据类型。散点,顾名思义,就是很多点分散在平面上,而在平面坐标中,确定一个点需要两个坐标值,因此,绘制散点图的数据需要两列,且两列都是数字,对应的每一行都是平面坐标中的一个点。
另外,样本大小没有限制,少到一个点,多到成千上万,都是可以的;对于有规律的散点,甚至也可以拟合平滑曲线呈现其趋势。
一、绘制基本的散点图
1 | # 生成随机数据; |
二、散点图优化
2.1 对散点进行修饰,改变散点大小,形状,颜色,透明度,与笔触;
1 | pscatter <- ggplot(data,aes(x=var1,y=var2))+ |
2.2 对散点进行分类;
为方便分类,在此我们给data添加新的一列var3,并以var3分组进行填充;
1 | var1 <- runif(200) |
2.3 以var3分组设定形状;
1 | pscatter <- ggplot(data,aes(x=var1,y=var2,shape=var3))+ |
2.4 以var3分组设定大小;
1 | pscatter <- ggplot(data,aes(x=var1,y=var2,size=var3))+ |
2.5 以var3分组设定透明度;
1 | pscatter <- ggplot(data,aes(x=var1,y=var2,alpha=var3))+ |
2.6 以var3分组,同时设定形状,透明度,大小,颜色;
1 | pscatter <- ggplot(data,aes(x=var1,y=var2,shape=var3,alpha=var3,size=var3,color=var3))+ |
三、给散点添加文字标签
3.1 使用geom_text()函数添加文字;
1 | var1 <- runif(26) |
3.2 使用geom_label()函数添加文字标签,效果与geom_text()不同,会显示外框;
1 | pscatter <- ggplot(data,aes(x=var1,y=var2,fill=var3))+ |
3.3 只添加一个文字标签;
1 | pscatter <- ggplot(data,aes(x=var1,y=var2,fill=var3))+ |
3.4 仅对选择的点添加文字标签;
1 | library(dplyr) # 调用dplyr包中的filter()函数进行数据筛选; |
3.5 为坐标轴添加触须;
1 | # 使用geom_rug()添加触须,并指定颜色,透明度,和大小; |
四、添加边际分布(Marginal distribution)
边际分布可以通过ggExtra:ggMarginal()函数添加,用法如下:
1 | ggMarginal(p, data, x, y, type = c("density", "histogram", "boxplot", |
1 | library(dplyr) |
进一步优化,指定大小(数字越大边际占比越小),添加填充色;
五、添加平滑趋势线
使用函数geom_smooth()添加趋势线,用法如下:
1 | geom_smooth(mapping = NULL, data = NULL, stat = "smooth", |
1 | var5 <- 1:200+rnorm(200,sd=2) |