一.绘制基本散点图
(1)使用plot()函数
(2)使用ggplot()函数 heightweight是个多列数据集
ggplot(heightweight,aes(x=ageYear,y=heightIn))+geom_point()
ggplot(heightweight,aes(x=ageYear,y=heightIn))+geom_point(shape=21)
二.使用点形和颜色属性, 并基于某变量对数据进行分组
如何基于某个变量对数据进行分组,并用形状和颜色属性来表示
方法:
将分组变量映射给点形(shape)和颜色(colour)属性。
ggplot(heightweight,aes(x=ageYear,y=heightIn,colour=sex))+geom_point()
ggplot(heightweight,aes(x=ageYear,y=heightIn,shape=sex))+geom_point()
可以将一个变量同时映射给shape和colour属性
ggplot(heightweight,aes(x=ageYear,y=heightIn,shape=sex,colours=sex))+geom_point()
通过调用scale_shape_manual()函数可以使用其他点形,调用scale_colour_brewer()或者scale_colour_manual()函数可以使用其他调色板,
ggplot(heightweight,aes(x=ageYear,y=heightIn,shape=sex,colour=sex))+geom_point()+scale_color_brewer(palette = "Set1")+scale_shape_manual(values = c(1,2))
三.使用不同于默认设置的点形
方法:
通过指定geom_point()函数中的点形(shape)参数可以设定散点图中所有数据点点形
ggplot(heightweight,aes(x=ageYear,y=heightIn))+geom_point(shape=3)
如果已将分组变量映射给shape,则可以调用scale_shape_manual函数来修改点形
library(ggplot2)
> library(gcookbook)
> ggplot(heightweight,aes(x=ageYear,y=heightIn,shape=sex))+geom_point(shape=3)+scale_shape_manual(values = c(1,4))
> ggplot(heightweight,aes(x=ageYear,y=heightIn,shape=sex))+geom_point(size=3)+scale_shape_manual(values = c(1,4))
>
四.将连续变量 映射到 size 或 colour属性上即可
ggplot(heightweight,aes(x=ageYear,y=heightIn,colour=weightLb))+geom_point()
ggplot(heightweight,aes(x=ageYear,y=heightIn,size=weightLb))+geom_point()
如图:将变量weightLb映射给点size属性,同时将变量sex映射给colour属性。(图形中有很多重合的数据点,因此用alpha=.5设定为半透明)
ggplot(heightweight,aes(x=ageYear,y=heightIn,size=weightLb,colour=sex))+geom_point(alpha=0.5)+scale_size_area()+scale_color_brewer(palette="Set1")
五.处理图形重叠
散点图中有大量数据点时,如何避免它们相互重叠?
> library(ggplot2)
> sp<-ggplot(diamonds,aes(x=carat,y=price))
> sp+geom_point()
针对大数据集绘制散点图时,图中各个数据点会被彼此遮盖,从而妨碍我们准确地评估数据的分布信息,这就是所谓的图形重叠,如果图形重叠程度较低,我们可以通过使用较小的数据点或者使用不会遮盖其他数据点的点形来避免数据重叠
如果图形的重叠程度较高,下面是一系列可行的方法:
1.使用半透明的点
library(ggplot2)
> sp<-ggplot(diamonds,aes(x=carat,y=price))
> sp+geom_point()
> sp+geom_point(alpha=0.1)
sp+geom_point(alpha=0.01)
2.将数据分箱(bin),并用矩阵表示(适用于量化分析)
stat_bin_2d()函数分别在x轴和y轴方向上将数据分割为30个组,总计900个箱子
scale_fill_gradient()重新设定数据点的颜色
sp+stat_bin2d()
sp+stat_bin2d(bins = 50)+scale_fill_gradient(low = "lightblue",high = "red",limits=c(0,6000))
3.将数据分箱(bin),并用六边形表示
> install.packages("hexbin")
> library(hexbin)
> sp+stat_binhex()+scale_fill_gradient(low = "lightblue",high="red",limits=c(0,8000))
sp+stat_binhex()+scale_fill_gradient(low = "lightblue",high="red",limits=c(0,6000))
对于这两种方法,在手动设置分箱范围时,因为数据点太多或太少,会出现一个在分箱范围外的箱子,且这个箱子的颜色会显示为灰色,而不是最大或最小值对应的颜色
4.使用箱线图
当散点图的其中一个数据轴或者两个数据轴都对应于离散型数据时,也会出现图形重叠的情况
> sp1<-ggplot(ChickWeight,aes(x=Time,y=weight))
> sp1+geom_point()
>
这时候可以调用position_jitter()函数给数据点增加随机扰动。默认情况下,该函数在每个方向上添加的扰动值为数据点最小精度的40%,不过,也可以通过width和height参数对该值进行调整。
添加随机扰动:
调用geom_point(position = "jitter")和geom_jitter()是等价的
只在水平方向上添加随机扰动
> sp1+geom_point(position = position_jitter(width = 0.5,height = 0))
当数据集对应于一个离散型数据轴和一个连续型数据轴时,箱线图可能是一种较好的展示方式,如下图。箱线图所表现的信息与散点图略有不同,因为他很难反应出离散坐标轴上每个位置的数据点数量的信息,箱线图的绘制方式有时是缺点,但有时候却是恰如其分的可视化方法。
对于Chickweights数据集,其对应于x轴上的数据是离散的,但其被存储为数值型向量,因此,ggplot()不知该如何对该数据集进行分组,调用aes(group=...)可以告诉ggplot如何对数据进行分组
sp1+geom_boxplot()
> sp1+geom_boxplot(aes(group=Time))
六.添加回归模型拟合线
运行stat_smooth()函数并设定method_1m即可向散点图中添加线性回归拟合线,这将调用1m()函数对数据拟合线性模型。首先,我们将在基本绘图对象存储在对象sp中,然后,再添加更多的图形部件