R语言可视化——直方图及其美化技巧!

今天介绍关于直方图的美化技巧!

数据集仍然使用上一节使用到的有关钻石的数据信息。

data(diamonds)

set.seed(42)

small <- diamonds[sample(nrow(diamonds), 1000), ]

head(small)

以上通过设定随机种子,从diamonds中随机抽取了1000个数据作为我们制作直方图的样本数据(源数据集有点大)。

直方图的做法与我们之前做柱形图(条型图)所使用函数主题语法大致相同,不同仅仅在于添加的图层对象为geom_histogram()

由于直方图呈现数据分布趋势,所以仅需一个数值型变量进入即可。

ggplot(small)+geom_histogram(aes(x=price))

ggplot(small,aes(price))+geom_histogram()

以上两句直方图语法是等价的,也就是说,无论参数price在ggplot函数中,还是在图层对象geom_histogram括号内,只要是被aes()美学映射包括着,都将作用于全局。

当然如果在直方图参数中添加颜色映射,那么就可以做出堆积直方图。

ggplot(small,aes(price,fill=cut))+geom_histogram()

当颜色变量(因子变量)进入aes内的时候,默认直方图输出为堆积直方图。(大家是否想起了之前学过的柱形图,可以通过设置position参数对多序列柱形进行堆积、簇状转换)。

我们尝试着将position=stack参数加入geom_histogram(position="stack")参数中,看下以上说法是否可靠。

ggplot(small,aes(price,fill=cut))+geom_histogram(position="stack")

果然不出所料,加入分类变量时的直方图,其位置调整与柱形图如出一辙,那么我们可以将position的几个参数挨个尝试:

ggplot(small,aes(price,fill=cut,alpha = 1/10))+geom_histogram(position="identity") #position=identity,即不对直方图位置作任何变换。

ggplot(small,aes(price,fill=cut,alpha = 1/10))+geom_histogram(position="dodge") #position=dodge,将各系列位置错开成簇状直方图。

ggplot(small,aes(price,fill=cut,alpha = 1/10))+geom_histogram(position="fill") #position=fill,将各系列位置错开成堆积百分比直方图。

以上就是关于直方图几种常用形式,接下来讲关于直方图图表元素调整。

直方图的binwidth参数控制直方图组距大小。

ggplot(diamonds, aes(carat))+geom_histogram(binwidth = 0.01)

ggplot(diamonds, aes(carat))+geom_histogram(binwidth = 0.2)

当然也可以在直方图中直接添加fill填充为喜欢的颜色。

ggplot(diamonds, aes(carat))+geom_histogram(binwidth = 0.1,fill="steelblue")

使用外部主题命令:

ggplot(diamonds, aes(carat))+geom_histogram(binwidth = 0.1)+theme_stata()+scale_fill_stata() #以上使用了stata的主题及配色模板

ggplot(diamonds, aes(carat))+geom_histogram(binwidth = 0.1)+theme_solarized()+scale_fill_solarized() #以上使用了solarized主题及配色模板

手动自定义颜色:

ggplot(diamonds, aes(carat,fill="steelblue"))+geom_histogram(binwidth = 0.1)+theme_few()+scale_fill_manual(values="#FB882C")+ theme(strip.background=element_blank(),legend.position="none")

ggplot(small,aes(price,fill=cut))+geom_histogram(position="fill") +theme_wsj()+scale_fill_wsj()+theme(strip.background=element_blank(),legend.position="none")

ggplot(small,aes(price,fill=cut))+geom_histogram(position="fill") +theme_economist(base_size=14)+scale_fill_economist()+theme(strip.background=element_blank(),legend.position="none")

关于直方图的分面技巧:

ggplot(small,aes(price,fill=cut))+geom_histogram()+facet_wrap(~cut)

ggplot(small,aes(price,fill=cut))+geom_histogram()+facet_wrap(~cut)+theme_wsj()+scale_fill_wsj()+guides(fill=guide_legend(title=NULL)) #关于直方图的封面技巧

ggplot(small,aes(price,fill=cut))+geom_histogram()+facet_wrap(~cut)+theme_economist(base_size=14)+scale_fill_economist()+guides(fill=guide_legend(title=NULL))

原文发布于微信公众号 - 数据小魔方(datamofang)

原文发表时间:2016-09-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习从入门到成神

XGboost数据比赛实战之调参篇(完整流程)

这一篇博客的内容是在上一篇博客Scikit中的特征选择,XGboost进行回归预测,模型优化的实战的基础上进行调参优化的,所以在阅读本篇博客之前,请先移步看一下...

2.9K8
来自专栏悦思悦读

决策树告诉你Hello Kitty到底是人是猫

Hello Kitty,一只以无嘴造型40年来风靡全球的萌萌猫,在其40岁生日时,居然被其形象拥有者宣称:HelloKitty不是猫! 2014年八月,研究 H...

3647
来自专栏小鹏的专栏

trick—Batch Normalization

深度学习中 Batch Normalization为什么效果好? 这里分五部分简单解释一下Batch Normalization (BN)。 1. What ...

3118
来自专栏贾老师の博客

【笔记】ejoy2d —— matrix

1254
来自专栏算法channel

2个基于TensorFlow的Github开源项目,1篇TensorFlow的概念和方法梳理文章

介绍 2 个非常接地气的 Github 开源项目,都是基于 TensorFlow 框架开发的,通过练习这些项目,能很快提升使用 TF 的能力,同时加深理解常用的...

1452
来自专栏ATYUN订阅号

Python机器学习的练习四:多元逻辑回归

在本系列的第3部分中,我们实现了简单的和正则化的逻辑回归。但我们的解决方法有一个限制—它只适用于二进制分类。在本文中,我们将在之前的练习中扩展我们的解决方案,以...

4035
来自专栏Spark学习技巧

SparkML模型选择(超参数调整)与调优

Spark ML模型选择与调优 本文主要讲解如何使用Spark MLlib的工具去调优ML算法和Pipelines。内置的交叉验证和其他工具允许用户优化算法和管...

4245
来自专栏编程软文

前端慌不慌?用深度学习自动生成HTML代码

5036
来自专栏智能算法

Learning to Rank 小结

一、学习排序(Learning to Rank) LTR(Learning torank)学习排序是一种监督学习(SupervisedLearnin...

4455
来自专栏mathor

matlab—影像分析进阶

在这一章里面我们要做的事情全部都围绕两个问题,一个图像当中有多少个xxx,他们的大小是多少,举个例子

2002

扫码关注云+社区