小提琴图
2018-09-03
2018-09-03
1 数据集准备
小提琴图是箱线图和核密度图的结合,因为形似小提琴而得名。小提琴图是用来比较多组数据分布的方法。
该数据为陕西省西安市雁塔区2018年6月25日中午11时到6月26日11时的温度变化数据,时间段处于阴雨天气,因此温度波动性较为明显。
library(readxl) # 读取xlsx格式数据的加载包
data=read_excel("D:/TASK/温度.xlsx")
str(data) #查看数据结构信息
## Classes 'tbl_df', 'tbl' and 'data.frame': 25 obs. of 2 variables:
## $ Time : num 11 12 13 14 15 16 17 18 19 20 ...
## $ Temperature: num 31 26 26 27 28 28 29 31 31 29 ...
通过读取陕西省西安市雁塔区6月25日中午11时到6月26日11时的温度变化数据,得知该数据有两个变量,分别为时间和温度,且温度大多在24~31度之间波动。
2 绘制简单小提琴图
绘制小提琴图需要用到vioplot函数,其基本书写格式为:
vioplot(数据$数值型向量名)
由于vioplot函数不支持设置图形标题等参数,因此必须利用title函数单独设置,基本书写格式为:
title(main=“主题”,ylab=“纵坐标”,xlab=“横坐标”)
例如,下图是对陕西省西安市雁塔区6月25日温度绘制的小提琴图:
library(vioplot)
vioplot(data$Temperature)
title(main="陕西省西安市雁塔区温度观测",ylab="温度",xlab="全部观测")
从上图看出,从全部观测样本来看,其中空心圆表示中位数,小提琴图中间叠加了一个较窄的黑色箱线图,外围的曲线为核密度估计曲线。
3 ggplot绘制小提琴图
jsdata=read_excel("D:/TASK/净水器建模(1月19日)副本1.xlsx")
str(jsdata)
## Classes 'tbl_df', 'tbl' and 'data.frame': 1011 obs. of 20 variables:
## $ 标题 : chr "惠安特水龙头净水器家用厨房直饮净水机双出水智能纯水机ro反渗透" "爱华普净水器家用直饮加热一体机RO反渗透纯水机厨房自来水过滤器" "【新品上市】史密斯佳尼特550G无桶大流量净水器CDR550-A1" "碧云泉净水器家用直饮加热一体机自来水过滤器反渗透净水机器R506" ...
## $ 原价 : num 1664 6990 4998 4999 2099 ...
## $ 促销价 : num 499 1298 1099 558 1188 ...
## $ 销量 : num 845 550 121 103 850 ...
## $ 评价 : num 2849 3049 129 378 2054 ...
## $ 天猫积分 : num 49 129 369 469 86 49 89 86 269 109 ...
## $ 描述评分 : num 4.8 4.9 4.9 4.9 4.9 4.9 4.8 4.9 4.9 4.9 ...
## $ 服务评分 : num 4.8 4.8 4.9 4.9 4.9 4.8 4.8 4.9 4.9 4.9 ...
## $ 物流评分 : num 4.9 4.8 4.9 4.9 4.8 4.9 4.8 4.9 4.8 4.9 ...
## $ 人气 : num 6590 12879 456 15450 11537 ...
## $ 保修期 : chr "1年" "1年" "1年" "2年" ...
## $ 店铺分类 : chr "官方旗舰店" "官方旗舰店" "官方旗舰店" "官方旗舰店" ...
## $ 智能类型 : chr "其他" "其他" "不支持智能" "其他" ...
## $ 颜色 : chr "白色" "黑色" "白色" "黑色" ...
## $ 使用位置 : chr "终端净水" "终端净水" "终端净水" "终端净水" ...
## $ 功效 : chr "直饮" "直饮" "直饮" "直饮" ...
## $ 净水器品牌: chr "Huianter/惠安特" "爱华普" "CHANITEX/佳尼特" "碧云泉" ...
## $ 分类 : chr "纯水机" "净水机;纯水机" "净水机;纯水机;反渗透纯水机" "净水机;纯水机;台面净水器;反渗透纯水机" ...
## $ 工作原理 : chr "反渗透" "反渗透" "反渗透" "反渗透" ...
## $ 滤芯 : chr "活性炭;RO膜" "活性炭;活性炭;超滤;PPF棉;RO膜" "活性炭;RO膜" "活性炭;RO膜;PP棉,活性炭纤维" ...
library(ggplot2)
jsdata$销量=log(jsdata$销量+1) #因变量数值作对数处理
p<-ggplot(jsdata,aes(x=保修期,y=销量))
p+geom_violin()
上面的图形是绘制的普通的小提琴图,进行可视化时图中曲线会互相干扰,各组数据的规律不明显,为此需要进一步分析。如下:
p+geom_violin()+
geom_boxplot(width=.1,fill="lightgreen",outlier.colour=NA)+
stat_summary(fun.y=median,geom="point",fill="white",shape=21,size=2.5)
从上图看,用violin和boxplot绘制出的小提琴图,得出净水器数据的销量的趋势,且净水器保修期为离散变量,可以看出,5年的净水器保修期的销量最高,无保修期的净水器销量最低。推测保修期时间影响销量。
4 本章汇总
参数 | 类别 | 功能 |
---|---|---|
readxl | 包 | 读取EXCEL数据包 |
vioplot | 包 | 绘制小提琴包 |
title | 参数 | 设置图形标题 |
ggplot | 包 | 图形的绘制 |
geom_violin | 函数 | 绘制小提琴图 |
geom_boxplot | 函数 | 绘制箱线图 |
fill | 参数 | 图形填充色 |