查看原文
其他

R语言可视化——箱线图及其美化技巧

2016-09-27 小魔方 数据小魔方

今天跟大家分享如何在R语言中利用ggplot函数制作箱线图及其美化。


箱线图也是经常会用到的用于呈现数据分布形态的重要的图表类型。


还是以ggplot2包内置的数据集为例进行案例演示:




ggplot(mpg,aes(class,displ))+geom_boxplot()






以上是最简单的形式,一个分类变量,一个连续性数值型;我们通过添加分类变量,让箱线图能够呈现更多的数据信息。


ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()



接下来我们还像往常一样,通过position参数的切换来验证boxplot图表的position参数使用规则:


ggplot(diamonds,aes(cut,price,fill=color,alpha=1/30))+geom_boxplot(position="identity")




#当将位置设置为不做任何变换时,分类后的箱线图会在对应的X轴分类项相互叠加,造成遮挡阅读不便,不推荐此参数。


ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot(position="stack")




根据经验我们就可以猜到,估计使用堆积方式来呈现多维箱线图肯定会失败,因为即便真的将分类箱线图堆积起来,那么其呈现数据分布形态的功能也就丧失殆尽,果然软件是报错的。


ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot(position="dodge")




果然在添加有多分类变量时,箱线图默认使用的position参数是dodge。



ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot(position="fill")




同样将position参数设定为堆积百分比也毫无意义,软件没有通过并提出警示。


ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()+facet_grid(.~color) 




ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()+facet_wrap(~color) 




仔细体会两种分面函数效果的差异:



箱线图美化:


簇状:


ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()+ggtitle("Box Plot")+theme_wsj()+scale_fill_wsj()+guides(fill=guide_legend(title=NULL)) 




ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()+ggtitle("Box Plot")+theme_economist()+scale_fill_economist()+guides(fill=guide_legend(title=NULL)) 




分面:


ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()+ggtitle("Box Plot")+theme_wsj()+scale_fill_wsj()+guides(fill=guide_legend(title=NULL))+ facet_grid(.~color) 




ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()+ggtitle("Box Plot")+theme_economist()+scale_fill_economist()+guides(fill=guide_legend(title=NULL))+facet_grid(.~color)  




魔方学院QQ群:


QQ群:

微信群:





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存