2.1 散点图
散点图主要用于表达两组数据间的关系,一般x轴和y轴线需要是连续型变量。连续型变量就是数值型变量,R语言中有num、double、date等数据格式。具体通过str()函数可以识别数据框中每个变量具体的数据类型。ggplot2当中使用几何对象geom_point(),用来绘制散点图。首先通过library()函数将ggplot2程序包加载到R环境中。由于需要使用外部数据,因此需要加载readr包,以便使用其中的read_csv()函数将外部CSV文件数据导入R环境,注意文件路径格式的书写方式与Windows中看到的方式是有区别的,需要使用双斜杠。由于CSV文件较为通用,导入过程不容易出问题,因此本书尽可能使用这一格式。除了可以使用readr包中的read_csv()函数还可以使用基础包中的read.csv()函数,前者在解析某些格式时功能比较强大。下面研究具体实例数据。
观察销量与销售额关系,基本可以肯定销量与销售额呈现正比关系:希望提升销售额,增加销量是一个比较可行的办法。虽然这个似乎天然成立,但是将数据可视化并呈现出来在实际工作中非常有意义。散点图的绘图代码如下:
#代码2-1散点图 #将绘图包加载到R环境 library(ggplot2) #将readr包加载到R环境,用于将salesdata.csv文件导入R环境 library(readr) data1<-read_csv('D://Per//MB//bookfile//Mbook//data//salesdata.csv') ggplot(data1,aes(x=quantity,y=sales))+geom_point()
代码运行的结果如图2-1所示。
图2-1 散点图
图2-1比较直观,但是最大的缺点是在左下角包含的观测值太多,并且这些观测值互相遮盖太严重。图2-1得出的结论是比较粗糙的,如果要更加详细的内容,则需要使用其他可视化方法:例如数据分箱、二维密度图等,也可以将数据分段之后使用数据统计方法计算销售额及销售量的关系。下面使用geom_smooth()添加回归拟合曲线,更加直观地反映销售量、销售额之间的关系。由于拟合曲线会自带条形区域反映置信区间,为了避免散点图被遮盖,例子中先绘制拟合曲线,之后绘制散点图,如图2-2所示。
#代码2-2向散点图添加拟合曲线 #将绘图包加载到R环境 library(ggplot2) #将readr包加载到R环境,用于将salesdata.csv文件导入R环境 library(readr) data1<-read_csv('D://Per//MB//bookfile//Mbook//data//salesdata.csv') ggplot(data1,aes(x=quantity,y=sales))+geom_smooth()+geom_point()
添加拟合曲线后的散点图如图2-2所示。
图2-2 向散点图添加拟合曲线
通过图2-2中的拟合曲线可以明显地看出销量和销售额之间的正比例关系,虽然尾端拟合曲线下降,表示这种关系有所减弱,但是尾端观测点的占比相对较少。如果读者希望严格地评估拟合曲线对原始数据的代表性,则需要先计算得到回归模型,之后对模型进行评价。geom_smooth()绘制的拟合曲线有时从严格的回归分析上看拟合度不一定适当。
针对geom_smooth()可以通过参数fill设置置信区间的区域填充色,通过color设置拟合曲线线条的颜色,通过span参数设置拟合曲线的平滑程度。在图2-3中将置信区间区域填充色设置为lightblue,将拟合曲线颜色设置为red,代码如下:
#代码2-3散点图拟合曲线格式调整 #将绘图包加载到R环境 library(ggplot2) #将readr包加载到R环境,用于将salesdata.csv文件导入R环境 library(readr) data1<-read_csv('D://Per//MB//bookfile//Mbook//data//salesdata.csv') ggplot(data1,aes(x=quantity,y=sales))+geom_smooth(fill='lightblue', color='red', span=0.1)+geom_point()
对散点图拟合曲线进行调整后的结果如图2-3所示。
通过图2-3对拟合曲线格式进行设置,可以更加突出希望表达的内容,当然也可以做弱化处理,这取决于读者希望表达的观点。
图2-3 散点图拟合曲线格式调整