前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言可视化——密度曲线图及其美化!

R语言可视化——密度曲线图及其美化!

作者头像
数据小磨坊
发布2018-04-11 11:52:36
2.9K0
发布2018-04-11 11:52:36
举报
文章被收录于专栏:数据小魔方

今天跟大家分享关于密度曲线图及其美化技巧!

密度曲线图可能平时大家用的不多,不过其实没什么神秘,它的功能于直方图一样,都是用于表达连续型数值变量的分布形态。

案例还是使用之前的关于钻石的那个数据集。

密度曲线图所使用的图层函数为geom_density() ,而且函数内position参数位置类型与我们之前讲到的直方图、柱形图(条形图时一样的)。

ggplot(diamonds,aes(x=price))+geom_density()

里面的线条颜色是通过colour参数进行控制(一定要记好colour与fill两个颜色填充参数的区别,colour控制线条、点颜色、fill控制区域颜色,所以在散点图、曲线、折线图途中使用colour参数,在面积图、柱形图中使用fill参数)

ggplot(diamonds,aes(x=price))+geom_density(colour="steelblue")

当然密度曲线的函数中也允许出现分类变量:

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density()

上面说过colour控制点、线条颜色、fill控制区域颜色,但是密度曲线算是一个另类,仔细看上图你会发现,它不同于折线图,因为每条密度曲线都是一个闭合曲线,所以他是允许使用fill参数填充闭合区域的:

ggplot(diamonds,aes(x=price,fill=clarity,alpha = 1/10))+geom_density()

你会发现这样出来的图形除了密度曲线内部除了被填充颜色之外,整体形状与使用colour参数填充线条颜色是一样的。

现在继续让我们回忆一下,关于上一节中将直方图时,处理position时的场景,position主要有四个我们常用的参数:

identity(不做任何变换)、stack(堆积)、dodge(簇状)、fill(百分比堆积)

其实只要是geom开头的集合图层对象,都是适用这几个参数的,那么跟我我们的分析,以上密度曲线图默认的参数应该是identity,下面验证我们的猜想。

ggplot(diamonds,aes(x=price,fill=clarity,alpha = 1/10))+geom_density(position="identity")

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density(position="identity")

果然不出我们所料,默认的带分类变量的密度曲线图确实是使用默认的identity参数。

那么我们依次尝试其他几种参数情况下的密度曲线图呈现何种效果:

堆积:(position="stack")

ggplot(diamonds,aes(x=price,fill=clarity))+geom_density(position="stack")

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density(position="stack")

堆积:(position="dodge")# 案例来说密度曲线做成簇状效果是不合适的,不过我还是想看下到底神马效果

ggplot(diamonds,aes(x=price,fill=clarity))+geom_density(position=position_dodge(width =1000))

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density(position=position_dodge(width =1000))

大家可以看到使用dodge参数之后,R语言会有提示建议,密度曲线图中X轴必须是无重复间隔刻度的数据,而此处的概率密度曲线无法满足这个要求:

那么最后一个位置参数是position=fill (堆积百分比)

ggplot(diamonds,aes(x=price,fill=clarity))+geom_density(position="fill")

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density(position="fill")

关于概率密度曲线的分面表达:

ggplot(diamonds,aes(x=price,fill=clarity))+geom_density(position="fill")+facet_grid(.~clarity)

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density(position="fill")+facet_grid(.~clarity)

通过图形效果我们可以看到,概率密度曲线的分面表达式是没有实际意义的,因为单独一个序列中只有一个类别,那么它的占比自然就是百分之百。

通过套用主题及配色模板,我们可以对密度曲线图进行适当美化:

ggplot(diamonds,aes(x=price,fill=clarity))+geom_density(position="fill")+theme_wsj()+scale_fill_wsj()+guides(fill=guide_legend(title=NULL))

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density(position="fill")+theme_wsj()+scale_colour_wsj()+guides(colour=guide_legend(title=NULL))

ggplot(diamonds,aes(x=price,fill=clarity))+geom_density(position="stack")+theme_wsj()+scale_fill_wsj()+guides(fill=guide_legend(title=NULL))

ggplot(diamonds,aes(x=price,colour=clarity))+geom_density(position="stack")+theme_wsj()+scale_colour_wsj()+guides(colour=guide_legend(title=NULL))

因为套用的配色模板中颜色数量上限是6个,而我们的分类变量类别有8个,所以最后两个类别的线条色、填充色改成了默认。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小魔方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档