数据可视化是将数据集中的洞察以图形方式呈现,使得数据的分析结果更加直观易懂。通过使用富有意义且引人注目的图表,可以更容易地传达数据分析的发现。根据不同的需求,有多种类型的图表可供选择,例如条形图用于展示分类分布,折线图用于展示时间序列信息等。当使用合适的图表和和谐的色彩搭配时,图表不仅方便而且美观。Python和R语言中有许多用于数据可视化的库,如Altair、ggplot、Bokeh、Holoviews等。
Bokeh是一个提供声明式框架的可视化包,用于生成灵活且强大的基于Web的图表。Bokeh使用HTML canvas生成图表,并具有多种交互功能。Bokeh支持Python、Scala、Julia以及R语言的接口。Bokeh库由Bokeh核心团队构建和维护。
rbokeh
是一个使用Bokeh可视化工具的开源R语言绘图包。它提供了一个灵活的声明式接口,用于动态的基于Web的可视化。rbokeh包由Ryan Hafen开发并维护。在使用rbokeh之前,需要安装R和RStudio。也可以使用Kaggle或Google Colab来创建rbokeh可视化。
rbokeh允许构建各种类型的交互式图表。它帮助和观众通过与数据故事的互动来了解更多信息。结果可以被分享、集成到HTML文档中或用于在线应用中。
要开始使用,将使用R函数install.packages()
从CRAN获取这个包。
install.packages("rbokeh")
导入rbokeh包,将使用以下命令:
library("rbokeh")
同时导入以下库:
library("tidyverse")
library("ggplot2")
导入的库提供许多预安装的数据集。运行以下命令查看预安装数据集的完整列表:
data()
在本文中,将使用不同的预安装数据集。在进行图表可视化之前,重要的是要注意rbokeh图表是通过初始化一个figure()
函数来创建的。这类似于一个空的画布,可以在上面布局,然后使用管道操作符添加更多层。数据输入是x、y和ly_geom()
,这将指定使用的几何类型,如ly_points
、ly_lines
、ly_hist
、ly_boxplot
等。
让尝试构建一个散点图。以预安装数据集中的Orange数据集为例。该数据集包括不同树木的年龄和周长的统计数据。可以使用以下命令打印出‘Orange’数据集的前几行:
head(Orange)
假设想看看不同树木年龄和周长之间的关系;散点图是一个很好的选择,可以看到所有的数据点。首先,将初始化一个‘figure()’。然后将创建一个‘ly_points’层,并传递所需的参数:
figure() %>% ly_points(x = age, y = circumference, color=Tree, data = Orange)
这里的结果图表包括每棵树的一个点,并显示了树木年龄和周长之间可能存在的关系。此外,悬停在点上可以查看使用hover函数添加的提示。其他交互功能,如平移和缩放,也是可用的。
接下来,将使用Orange数据集创建一个简单的折线图。对于年龄与周长的折线图,可以简单地指定x、y和data参数在‘ly_lines’层中,如下所示:
line_plot%ly_lines(x=age,y=circumference,color=Tree, data = Orange,width=3)
这里将结果图表赋值给‘line_plot’,然后通过写‘line_plot’来可视化图表。这是因为rbokeh图表是对象,可以稍后保存、检索和修改。还设置了线宽为3,以获得更粗的线条。
接下来将查看直方图。这里使用的是预安装数据集中的Flight frequency数据集。该数据集包括不同周日期的航班频率统计。将使用以下命令查看Flight frequency数据集的前几行:
head(flightfreq)
可以使用直方图来可视化数据中某一列值的分布。这里使用以下代码显示航班频率的分布。这里将使用ly_hist
函数来查看变量的分布。
h % ly_hist(Freq, data = flightfreq, breaks = 30, freq = FALSE)
现在来绘制箱线图,这通常用于确定变量值的集中趋势。使用以下代码,将为Flight frequency数据集中的每一天制作一个箱线图。
figure(width = 600) %>% ly_boxplot(Freq,dow, data = flightfreq)
对于下一个图表,即条形图,使用的是Iris数据集,该数据集包含了萼片的长度和宽度,以及物种。
bar_chart% ly_bar(Species, data = iris) %>% theme_axis("x", major_label_orientation = 90)
可以使用网格图,它允许在同一个布局中放置多个图表。可以合并不同类型的图表,如条形图、折线图、散点图等。使用以下代码,将创建一个网格图。
tools <- c("pan", "wheel_zoom", "box_zoom", "box_select", "reset")
p1 % ly_points(Sepal.Length, Sepal.Width, data = iris, color = Species)
p2 % ly_points(Petal.Length, Petal.Width, data = iris, color = Species)
grid_plot(list(p1, p2), same_axes = TRUE, link_data = TRUE)