二元变量的散点图
散点图的绘制
二元变量的散点图(Scatter Plots)是将一个变量作为横轴,另一个变量作为纵轴,并将样本一一画在这个坐标系中。这样的散点图能够反映两个变量之间的关系或聚集程度。
R中创建散点图的基础函数是plot(x,y)
,其中x和y是数值型向量,代表着图形中的(x,y)点。
# 基础函数
plot(df$工数1,df$工数2)
# 添加坐标轴名字和图名的散点图
plot(df$工数1,df$工数2,main="哈尔滨工业大学信管专业学生工数1与工数2的成绩散点图",xlab="工数1成绩",ylab="工数2成绩")
为了了解每个样本的准确位置,特别是识别离群样本,需要在图中加上样本好。增加标记的语句是text()
。但需要注意,此时为了增加可看性,最好将原来散点图中的“⚪”去掉,即使用type="n"
。
例如:
plot(df$工数1,df$工数2,main="哈尔滨工业大学信管专业学生工数1与工数2的成绩散点图",xlab="工数1成绩",ylab="工数2成绩",type="n");text(df$工数1,df$工数2)
散点图矩阵的绘制
散点图可以一次对两个定量变量之间的关系进行可视化。但是如果想观察一个dataframe中所有字段之间的二元关系,应该怎么做呢?一种途径就是将散点图绘制在一个矩阵中,即下面介绍的散点图矩阵。
R中有很多种创建散点图矩阵的函数,在此,使用最基础的plot(dataframe)
函数。
plot(df)
# 依然可以使用main=“str”添加主标题
如果只需要线代和工数1、工数2的散点图,可以使用:
> plot(df$线性代数~df$工数1+df$工数2)
Hit <Return> to see next plot:
Hit <Return> to see next plot:
三元变量的气泡图
散点图可以很直观地表现二元变量之间的关系。那么三个变量呢?一种方法是使用三维散点图来表示。而另一种方法就是,先创建一个二位散点图,然后用点的大小来代表第三个变量的值。这就是气泡图(bubble plot)。
气泡图的执行语句是symbols()
函数。该函数可以在指定的(x,y)坐标上绘制圆圈图、方形图、温度计图和箱线图。以绘制圆圈图为例:
symbols(x,y,circle=radius)
# 用面积表示第三个变量,套用成:
symbols(x,y,circle=sqrt(z/pi))
例如:
> symbols(df$工数1,df$工数2,circle=r,inches = 0.2,fg="white",bg="lightblue",main="bubble plot")
> text(df$工数1,df$工数2,rownames(df),cex=0.7)
一般来说,统计人员在使用R是都倾向于不适用气泡图,因为相比于对长度的判断,人们对面积的判断通常更难。
多元变量的雷达图
雷达图是一种将多维变量用二维平面图形表示的方法,通过这种图形可以值观考察多维数据的变化趋势。**在样本量与指标数量都较少的情况下,**可以利用雷达图进行比较分析,并通过对图像特征的提取进行综合评价。
使用stars()
函数绘制。
stars(x,full = TRUE,draw.segments = FALSE,len= ,key.loc=c(xcoord,ycoord),…)
# x为数值矩阵或数据框
# full为图形形状:full = TRUE表示圆形,full = FALSE表示半圆
# draw.segments控制星相颜色,draw.segments=T彩色,draw.segments=F黑白
# len为半径的尺度因子,表示雷达图的比例
# key.loc为图例位置
注意,绘制雷达图的时候,由于各个指标的尺度和量纲不一样,故一般需要标准化。
stars(scale(df),full=0,draw.segments = T,key.loc = c(10,15))
得到:
比较多变量分布的箱线图
使用boxplot()
函数绘制箱线图。
boxplot(df)
得到:
为了辨识中位线的位置以便进行比较,可以采用带有“腰线”的箱线图。加入notch=TRUE
即可。
boxplot(df,notch=1)
还可以带有颜色,加入col=rainbow(7)
即可。
boxplot(df,notch=1,col = rainbow(7))
得到: