10.1.3 基于ggplot2包的典型案例操作
下面以2016年全球互联网企业市值最高的TOP10公司为例,介绍如何通过ggplot2包完成数据可视化,以及如何通过图层的叠加使得简单的数据输出高端美观的图形。
首先加载需要用到的包并准备好绘图数据:
这里除了加载ggplot2包外,还加载了ggthemes包。ggthemes包可以提供一系列经过订制的绘图风格,它预先设定好了一些ggplot2包的图形参数,通过加载不同主题,编写几行简单代码即可绘制精美的图形。
由于案例中涉及的是数值比较,因此选用条形图进行展示。首先绘制出基础图形,然后在此基础上进行优化:
上述代码的运行结果如图10-18所示。
图10-18 基础图形示例
仔细观察图10-18可以发现,图10-18没有标题,无法直接获取图形传递的信息,我们可以通过ggtitle()函数为图形添加标题。另外,单纯灰黑色的图形有些单调,我们可以为它加载theme_wsj()主题:
在上述代码中,reorder(x,y)表示先将x转化为因子,然后根据y对其进行排序。stat参数有三个有效值,分别为count、identity和bin。其中count是对离散的数据进行计数,计数的结果用一个特殊的变量count来表示;bin是对连续变量进行统计转换,转换的结果使用变量density来表示;而identity是直接引用数据集中变量的值。示例代码中的labs()函数可以通过三个参数分别设置x轴标题、y轴标题和图主标题。
以上代码的运行结果如图10-19所示,其与华尔街日报的绘图风格类似。
图10-19 增加标题后的绘图输出
可以看到,图10-19中文字有部分重叠了,我们可以通过theme()函数修改x轴的格式,将文字翻转一个角度,代码如下:
调整x轴格式后的绘图输出如图10-20所示。
theme()函数可以设置坐标轴的样式,如改变x轴标度的位置等,详细信息可以参考帮助文档。另外,还可以使用scale_fill_wsj()函数设置柱形图的填充样式,例如,添加scale_fill_wsj()函数默认柱形图为红色,代码如下:
调整填充样式后的绘图输出如图10-21所示。
图10-20 调整x轴格式后的绘图输出
图10-21 调整填充样式后的绘图输出
通过调整scale_fill_wsj()函数的参数可以修改柱形图的颜色。柱形图非常适合数值的比较,从柱形图中可以明显看出哪个公司的市值更高,但是市值的具体数值却无法获取,此时可以通过geom_text()函数为柱形图添加标签,代码如下:
上述示例代码中,geom_text()函数有3个输入参数,其中,label,vjust和hjust分别代表标签名称、垂直位置和水平位置,它们后面的数值是传入的参数值。上述示例代码中的theme()函数有3个输入参数,其中,legend.position代表图例位置;axis.ticks.length表示刻度线长度,即第一个柱形与y轴的距离。
添加标签后的绘图输出如图10-22所示。
图10-22 添加标签后的绘图输出
图10-19~图10-22的图形风格是华尔街日报的风格,接下来看一下经济学人的风格:
经济学人风格绘图如图10-23所示。
图10-23 经济学人风格绘图