内容简介:当我开始使用R时,像任何初学者一样,我想要一个真正能够工作的代码和一个最低限度可理解的图像,并且很长一段时间这是我的主要目标,但是一旦这一点完成后,我意识到我的可视化看起来很糟糕,特别是在比较和审查其他博客和网站之后,我开始搜索让我们开始一个简单的可视化,来自diamonds数据集的直方图。
当我开始使用R时,像任何初学者一样,我想要一个真正能够工作的代码和一个最低限度可理解的图像,并且很长一段时间这是我的主要目标,但是一旦这一点完成后,我意识到我的可视化看起来很糟糕,特别是在比较和审查其他博客和网站之后,我开始搜索 如何改进我的可视化 。 下面,创建一个简单且专业的图像的一些技巧,以吸引读者的注意力。
1 创建可视化
让我们开始一个简单的可视化,来自diamonds数据集的直方图。
library(ggplot2) visualization <- ggplot(diamonds, aes(carat, fill = cut)) + geom_histogram(bins = 30)
1.1 包括上下文信息:标题、副标题和脚注
我们为什么要添加这些信息?因为这是一个快速和简单的方式来给图形上下文,并让读者理解我们在谈论什么。 添加这些信息的第二个原因是对我们所看到的内容有一个共同的理解。所有的文本都允许我们与读者“交谈”,并说:
- 你看到的图形显示的是“砖石数据集直方图”
- 这张图“让我们看到”克拉的分布。
- 该数据的来源是gglopt2包,该图形的作者是博客thinkingondata.com
另一个需要考虑的问题是,如果您包含了源代码,那么您就为您的工作添加了一个可信度层,因为读者知道您的数据来自哪里。
visualization <- visualization + labs( title ="Histogram for Diamond dataset", subtitle = "This is a general example in order to show the distribution of carats.", caption = "source: gglopt2 package\nauthor: thinkingondata.com")
1.2 包括一个专业的调色板的颜色
我爱上了Viridis调色板,所以我把它包含在我的所有图形中,使用相同的调色板一直使得选择颜色的过程非常容易,同时,作为次要的好处统一了所有的可视化 我的工作。
visualization <- visualization + scale_fill_viridis(discrete = TRUE)
1.3 包括主题
包含主题允许我们为可视化提供预定义的格式,让我们将其视为Times New Roman中编写的文档或Helvetica中的同一文档之间的区别。
我们可以在同一个演示文稿中的所有可视化中使用相同的主题,以创建一致感,例如在此博客中,所有可视化都使用相同的主题:theme_minimal。 有很多预定义的主题 ,如果你觉得你想要一些特别的东西,总有机会创建自己的 主题 。
visualization <- visualization + theme_minimal()
1.4 删除变量
很多时候,太多的信息会影响读者的注意,从可视化中删除隐含信息是一个好主意,在这种情况下,我认为我们不需要在轴中包含变量的名称。
尽管你可以删除x轴标签,但这并不总是一个好主意:取决于很多可视化的标题和表示格式。 在某些情况下,如果您在标题中包含相同的信息,删除标签可能是一个不错的选择。
visualization <- visualization + theme(axis.title.x=element_blank(), axis.title.y=element_blank())
2 统一感
为什么我们要为我们的图像集创造一种统一感?因为如果一切都很和谐,就更容易阅读我们正在接收的信息:颜色,图像,风格,来源......我们可以考虑像流动一样的信息,在这种情况下我们想要一个柔和的流动,某些东西读者几乎察觉不到。
在创建演示文稿时 - 将其命名为报表,项目,文章 - 可能我们正在使用一组可视化,并且在编辑结束之前重要的是创建类似的样式以便于吸引读者:使用相同类型的字母,保持标题和副标题的使用不变,引用源,使用相同的调色板,我们正在创建一种通用格式,一种通用语言。
理解可视化是一种努力,一种注意力的努力。如果有人做了一次努力,我们不会每次为每个新图像重新创建相同的工作量。
一些例子:
-
flowingdata.com,当所有可视化都保持相似的特征时,即使大多数时候每个帖子的主题都完全不同。
-
theeconomist.com,所有的可视化都有类似的风格,如果我们是常规读者,我们知道他们的可视化,标题,字幕和非常相似的颜色选择的相同位置,当我们检查新的可视化时,我们将重点放在消息是什么,而不是试图重新解释一切(再次!)。
2.1 使用GRIDEXTRA库将多个图形混合在一起
使用gridExtra库我们可以把多个可视化中创建一个可视化。 所有图像一起帮助我们更好地了解所选颜色以及它们如何相互作用。 这并不意味着我们必须在我们的演示中一起使用这些图像,这是为了方便决策者了解什么是最适合所有人的风格。
让我们用两个可视化实现一个例子。
## Initial vis_a <- ggplot(diamonds, aes(x = price, fill = cut)) + geom_bar(stat = "bin") vis_b <- ggplot(diamonds, aes(x=clarity,fill=clarity)) + geom_bar() grid.arrange(vis_a, vis_b)
包含的格式:
## Testing format vis_a <- ggplot(diamonds, aes(x = price, fill = cut)) + geom_bar(stat = "bin") + theme_minimal() + vis_text vis_b <- ggplot(diamonds) + geom_bar(mapping = aes(x = cut)) + theme_minimal() + vis_text
我们已经有两种具有正确格式的可视化,指示它们来自哪里,但少了调色板是不好的。
2.2 包括专业的PALETTE
我选择了两种不同的方式来包含Viridis调色板中的颜色,以创造一种统一感。
## Final vis_a <- ggplot(diamonds, aes(x = price, fill = cut)) + geom_bar(stat = "bin") + theme_minimal() + scale_fill_viridis(discrete = TRUE) + vis_text ## Picking manually 8 colors from Viridis Palette library(scales) q_colors <- 8 v_colors <- viridis(q_colors, option = "D") vis_b <- ggplot(diamonds, aes(x=clarity,fill=clarity)) + geom_bar()+ scale_fill_manual(values=v_colors) + theme_minimal()+ vis_text library(gridExtra) grid.arrange(vis_a, vis_b)
2.3 从多个图形中创建独特的可视化
有时,使用多个图表创建一个独特的可视化可能是一个好主意,在这种情况下,我们可以使用以下库之一:
GRIDEXTRA库提供许多用户级函数来处理“网格”图形,特别是在页面上排列多个基于网格的图,并绘制表格。
COWPLOT库这个软件包可以很容易地将多个'ggplot2'图组合成一个图并用字母标记它们,例如 A,B,C等,这是科学出版物经常需要的。
PATCHWORK库PATCHWORK包使得在ggplot中创建具有多个面板的布局变得非常容易。 PATCHWORK的目标是使单独的ggplots组合到同一图形中变得简单。 因此,它尝试解决与gridExtra :: grid.arrange()和cowplot :: plot_grid相同的问题,但使用的是引发探索和迭代的API。
最好的结果
对于我们的示例,我们使用cowplot库或PATCHWORK库(最终结果几乎相同)获得了最好的结果,而不是gridExtra库,但是因为我们正在使用一组非常有限的示例(只有一个!),所以最好的结果 可能会根据您想要加入的图表类型而有所不同。
两个图的代码
vis_text <- labs( title ="Exploring Diamond dataset", caption = "source: gglopt2 package") q_colors <- 8 v_colors <- viridis(q_colors, option = "D") avg.y <- mean(as.double(diamonds$clarity))*10 vis_a <- ggplot(diamonds, aes(x = price, fill = cut)) + geom_bar(stat = "bin") + theme_bw() + scale_fill_viridis(discrete = TRUE) + vis_text vis_b <- ggplot(diamonds, aes(x=clarity,fill=clarity)) + geom_bar()+ geom_segment(aes(x=0, xend=.01, y=avg.y, yend=avg.y)) + scale_x_discrete(breaks = 1:8)+ scale_fill_manual(values=v_colors) + theme_bw()+ vis_text
使用COWPLOT库
plot_grid(vis_a, vis_b, labels = c("A", "B"), nrow = 2, align = "v")
使用PATCHWORK库
library(patchwork) vis_a + vis_b + plot_layout(ncol = 1) & theme_bw()
使用GRIDEXTRA库
结果非常相似,但是两个图的沿x轴的尺寸是不同的。
grid.arrange(vis_a, vis_b)
结论
本文的目的是描述如何改进我们的图像,以及如何用很少的努力帮助读者继续阅读并保持关注。 我希望第一个和最后一个图像之间的差异足够大,能够形成动力并从变化开始。
致谢和阅读
ggplot2是一个用于编程语言R的数据可视化包。您可以通过 官方文档 了解更多信息,并通过使用ggplot2进行可视化。
特别感谢Nathan Yu的书“ Visualize this ”,它在最初的章节中提出了关于专业可视化应该是什么样子。
原文链接: http://www.thinkingondata.com/6-tips-to-make-your-visualizations-look-professional/
版权声明: 作者保留权利。文章为作者独立观点,不代表数据人网立场。严禁修改,转载请注明原文链接:http://shujuren.org/article/791.html
数据人网: 数据人学习,交流和分享的平台,诚邀您创造和分享数据知识,共建和共享数据智库。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 让 LaunchBar 在深色模式下看起来更原生的技巧
- CentOS 8.0 看起来还需要几周的时间
- 看起来不那么low的JS数组去重方法
- 换芯 Edge 的新截图曝光,看起来更像 Chrome 了?
- 如何让你的网页“看起来”展现地更快 —— 骨架屏二三事
- 看起来很复杂的 DEVONthink 搜索,用 Alfred Workflow 就能轻松搞定
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。