本文概述
前面的两篇文章介绍了如何使用基本R和ggplot2软件包制作直方图。直方图教程的第三部分也是最后一部分将介绍ggvis。该软件包类似于ggplot2, 因为它也是基于”图形语法”的。但是, ggvis的表达式略有不同, 并通过添加新功能来扩展ggplot2以使绘图具有交互性。想了解更多?探索srcmini教程。
步骤1。将ggvis软件包放入RStudio
要开始在ggvis中绘制直方图, 首先需要加载ggvis包:
library(ggvis)
如果你的系统上尚未安装ggvis, 则必须先执行此操作。这可以很容易地通过
install.packages("ggvis")
第二步。你的数据
这似乎很愚蠢, 但是请不要忘记你的数据!你可以使用已经内置在R中的数据集, 也可以获取自己的数据集。在此示例中, 我们将继续处理上一篇有关直方图的博客文章中的数据:chol数据集。
如果你是本教程的新手, 则可以通过嵌入在read.table()函数中的url()函数加载数据集:
第三步开始绘制基本直方图
要制作基本的直方图, 你可以使用以下代码行通过” chol”数据框中的” AGE”列制作简单的直方图:
更清楚地研究上面打印的代码行:你会发现ggvis使用magrittr软件包中的运算符%>%, 也称为管道运算符。此运算符将结果从其左侧传递到该函数右侧的第一个参数。因此, f(x)%>%g(y)实际上是g(f(x), y)的快捷方式。
作为一个额外的示例, 请考虑以下两个R命令, 它们是完全等效的:
option1 <- sum(abs(-3:3))
option2 <- -3:3 %>% abs() %>% sum()
第四步。美化直方图
与hist()函数和ggplot2()函数类似, 你可以通过扩展原始代码轻松调整直方图的可视化效果。在这种情况下, 可以如下扩展原始代码行, 以可视化直方图, 该直方图从” chol”数据集中获取” AGE”列, 用红色填充容器, 并用将中心设为零, 并将年龄作为标题添加到x轴:
就像使用hist()函数和ggplot2一样, 你可以分解这段相当大的代码块, 以查看每个小块在直方图的绘制过程中对可视化的贡献:
垃圾箱
你可以通过更改layer_histograms()函数内部的width参数轻松地调整垃圾箱的宽度:
width参数已经将垃圾箱宽度设置为5, 但是垃圾箱从哪里开始, 在哪里结束?
你可以为此使用center或boundary参数。中心应参考其中一个垃圾箱的中心值, 该值会自动确定其他垃圾箱的位置。边界参数指定仓位之一的边界值。同样, 指定单个值将固定所有垃圾箱的位置。由于这两个参数以不同的方式指定相同的事物, 因此你最多应设置中心或边界之一。
例如, 将之前的直方图(例如以35为bin中心)与下面的直方图进行比较, 其中center设置为36:
你可以通过将border参数设置为33.5来实施同一图。此数字等于36减去箱宽度的一半:
请注意, 边界和中心可能不在数据范围内。在这种情况下, ggvis足够聪明, 可以推断出你的意思并决定垃圾箱的位置。使用上述参数进行实验, 以了解对直方图解释可能产生的影响。
名称/颜色
除了add_axis()外, 通过使用管道运算符, 你可以指定要赋予特定标题或标签的轴。在这种情况下, 我们将
同样, 你也可以标记y轴:
你可以使用fill:=填充任何颜色的垃圾箱。
注意:=的使用, 它将属性设置为特定的颜色(或大小, 宽度等), 而不是像=运算符那样将其映射。
第五步。向直方图添加基本交互性
使用ggvis有很多优点, 但绝对可以与众不同的是, 你实际上可以使直方图具有交互性!这使你的报告读者可以更改绘图的参数并立即查看这些更改的结果。 ggvis为此使用了闪亮。让我们研究一下可以添加到直方图中的交互性的基础。
例如, 你可以添加一个输入滑块, 使你可以确定垃圾箱的宽度。这是如何做:
请注意, 本文中显示的图是直方图的静态版本。要检查交互式绘图, 该绘图以R进程为后盾, 可以随时更改图形, 请访问我们Shiny服务器上的直方图。
输入到input_slider的输入值是在RStudio控制台中执行代码时也可以看到的值。在这种情况下, 你会看到一个滑块, 其范围从值1到10, 步长为1, 并带有标签Bin Width。
接下来, 你还可以添加其他类型的用户输入(选择框)来确定垃圾箱的填充颜色:
可以在我们的Shiny服务器上再次找到此直方图的交互式版本。在这里, fill属性设置为四个选项之一, 在input_select()内部的choices参数中指定。 selected指定默认颜色为蓝色, 而label在交互式绘图中显示标签Fill Color。
请注意, 这些交互式可视化需要闪亮的程序包。通常, RStudio默认情况下附带此软件包。如果你不在RStudio中工作, 请通过执行install.packages(” shiny”)安装Shiny。
记住要记住你要通过直方图实现的目标以及要实现的目标!有时, 静态表示可能比动态表示更好。
第六步。使用ggvis还有更多
这只是冰山一角!当我们说你可以使用此软件包做更多的事情时, 请相信我们。
提示:如果你想对R中的数据可视化有更详细, 更广泛的了解, 你可能会对R的数据可视化技能轨道感兴趣, 在该技术轨道中, 你将学习如何通过创建数据来传达数据的基本特征ggplot2和基本R图形的精美可视化效果。
总结
在R中可以使用很多选项来制作直方图。你应该选择的选项实际上是要完成的目标与实现目标的速度之间的权衡。但是, 当然, 这种权衡取舍取决于你对R和其他语言的编程经验:对于任何训练有素的程序员, 任何一种选择都将很快。
但是, 如果你只是从R开始, 那么手头准备本教程可能是一个好主意。此外, 我们鼓励你去检查在本教程及以下内容中找到的其他信息。这样, 你将逐渐陷入数据可视化领域, 这将使你有时间快速流利。
因此, 最后, 唯一要权衡的因素就是可能要考虑的最重要的事情, 那就是”你想用直方图实现什么?”这个问题。