# 前言

> 原文：[Preface](https://serialmentor.com/dataviz/preface.html)

> 校验：[飞龙](https://github.com/wizardforcel)

> 自豪地采用[谷歌翻译](https://translate.google.cn/)

如果您是科学家，分析师，顾问或任何其他必须准备技术文档或报告的人，您需要掌握的最重要技能之一就是，以图表形式进行引人注目的数据可视化的能力。图表通常为你的论据带来权重。他们清晰，有吸引力，令人信服。好的和坏的图表之间的差异可能是高影响力或模糊不清的论文，补助或合同的得到或失去，工作面试的好与坏之间的差异。然而，令人惊讶的是，很少有资源可以教您如何制作引人注目的数据可视化。很少有大学提供有关这一主题的课程，也没有很多关于这个主题的书籍。 （当然有些存在。）绘制软件的教程通常关注如何实现特定的视觉效果，而不是解释为什么某些选择是首选而其他选择不是。在您的日常工作中，您只需要知道如何做出好的数据，如果您很幸运，您有一位耐心的顾问会在您撰写第一篇科学论文时教您一些技巧。

在写作的背景下，经验丰富的编辑谈论“耳朵”，听到（在内部，当你阅读一篇散文时）写作是否良好的能力。我认为，在图表和其他可视化方面，我们同样需要“眼睛”，看到一个图表，看看它是否平衡，清晰，引人注目的能力。就像写作的情况一样，可以学习查看图表是否有效的能力。拥有眼睛主要是指，您了解更多简单规则和良好可视化原则，并注意其他人可能没有的细节。

根据我的经验，同样像写作一样，你不会在周末读书时开发眼睛。这是一个终身的过程，今天对你来说过于复杂或过于微妙的概念，可能会在五年后变得更有意义。我可以对自己说，我继续开发我对图表的理解。我经常尝试让自己接触新的方法，并且我注意他人在他们的图表中做出的视觉和设计选择。我也愿意改变主意。我今天可能会认为一个特定的图表很棒，但下个月我可能会找到批评它的理由。所以考虑到这一点，请不要把我说的任何东西当作福音。仔细思考我对某些选择的理由，并决定是否要采用它们。

虽然本书中的材料是按逻辑展示的，但大多数章节都可以独立存在，而且无需阅读书籍封面。您可以随意浏览，选择您当前感兴趣的特定部分，或者涵盖您正在考虑的特定设计选择的部分。事实上，如果你不是一次性阅读本书，而是在更长的时间内逐渐阅读它，尝试在你的图表制作中应用书中的一些概念，并回过头来阅读其他概念或重新阅读您在一段时间后学到的概念，我认为你会从这本书中获得最大的收益。如果您在几个月的时间过后重新阅读它，您可能会发现同一章告诉您不同的事情。

尽管本书中的几乎所有图表都是用 R 和 ggplot2 制作的，但我并不认为这是 R 的书。我在谈论图表制作的一般原则。用于制作图表的软件是随意的。你可以使用任何你想要的绘图软件，来生成我在这里展示的各种图表。但是，ggplot2 和类似的软件包使我使用的许多技巧比其他绘图库简单得多。重要的是，因为这不是 R 的书，所以我不会在本书的任何地方讨论代码或编程技巧。我希望你专注于概念和图表，而不是代码。如果您对如何制作任何数据感到好奇，可以在[ GitHub 存储库](https://github.com/clauswilke/dataviz)中查看该书的源代码。

## 关于绘图软件和图表制作流程图的思考

我有超过二十年的为科学出版物准备图表的经验，并已只做了成千上万的图表。如果在这二十年中有一个常数，那就是图表制作流水线的变化。每隔几年，就会开发一个新的绘图库或者出现一个新的范例，大量的科学家们转而使用热门的新工具包。我使用 gnuplot，Xfig，Mathematica，Matlab，python 中的 matplotlib，R 中的 R 基本库，ggplot2，以及我目前无法记住的其他东西。我目前首选的方法是 R 中的 ggplot2，但我不希望在退休之前我会继续使用它。

软件平台的这种不断变化，是本书不是编程手册，以及为什么我遗漏了所有代码示例的主要原因之一。无论你使用哪种软件，我都希望这本书对你有用，而且即使每个人都从 ggplot2 转移并使用下一个新东西，我希望它仍然有价值。我意识到这个选择对于一些 ggplot2 用户来说可能会令人沮丧，他们想知道我如何制作给定图表。我告诉他们，阅读这本书的源代码，它是可用的。此外，将来我可能会发布一个仅关注代码的补充文档。

多年来我学到的一件事是，自动化是你的朋友。我认为作为数据分析流水线的一部分，图表应该自动生成（也应该是自动化的），它们应该从流水线中出来，准备好发送到打印机，不需要手动后处理。我看到很多学员自动生成他们的图表的粗略草稿，然后他们导入到 Illustrator 中进行修饰。这是坏主意并有几个原因。首先，在您手动编辑图表的那一刻，您的最终图表变得不可再现。第三方无法生成和您所做的完全相同的图表。虽然这可能并不重要，如果您所做的只是更改轴标签的字体，使线条模糊，并且很容易跨越到不太清晰的区域。举个例子，假设你想用更可读的标签手动替换谜之标签。第三方可能无法验证标签更换是否合适。其次，如果您在图表准备流水线中添加了大量手动后处理，那么您将更不愿意进行任何更改或重做您的工作。因此，您可能会忽略协作者或同事做出的合理的更改请求，或者即使您实际重新生成了所有数据，也可能会重复使用旧图表。这些都不是假设的例子。我在实际场景中看到过他们。第三，你自己可能会忘记，你为准备一个给定的图表做了什么，或者你可能无法生成一个新数据的未来图表，与你之前的图表在视觉上完全匹配。

由于上述所有原因，交互式绘图程序是一个坏主意。它们固有地迫使您手动准备您的图表。实际上，最好自动生成一个图表草稿并在 Illustrator 中修饰它，而不是在一些交互式绘图程序中手工制作整个图表。请注意，Excel 也是一个交互式绘图程序，不建议用于图表准备（或数据分析）。

数据可视化图书中的一个关键组成部分，是所提出的可视化的可行性。很高兴能够发明一些优雅的可视化新方法，但是如果没有人能够使用这种可视化轻松生成数据，那么就没有多大用处。例如，当 Tufte 首次提出迷你图时，没有人能够轻松制作它们。虽然我们需要有远见的人通过可能的方式来推动世界的发展，但我认为这本书是切实可行的，并直接适用于为其出版物准备数据的职业数据科学家。因此，我在后续章节中提出的可视化，可以通过几行 R 代码，通过 和随时可用的扩展包生成。事实上，本书中的几乎每一个图表，除了第 [26](no-3d.html#no-3d)，[27](image-file-formats.html#image-file-formats) 和 [28](choosing-visualization-software.html#choosing-visualization-software) 章中的一些图表外，都是完全自动生成的。

## 致谢

如果没有 RStudio 团队将 R Universe 变成一流的出版平台所做的出色工作，这个项目是不可能实现的。特别是，我要感谢 Hadley Wickham 创建 **ggplot2**，这是用于制作本书所有数据的绘图软件。我还要感谢 Yihui Xie 创建 R Markdown 以及编写 **knitr** 和 **bookdown** 软件包。如果这些工具没有准备就绪，我认为我不会启动这个项目。编写 R Markdown 文件很有趣，并且很容易收集材料并获得动力。特别感谢 Achim Zeileis 和 Reto Stauffer 的 **colorspace**，Thomas Lin Pedersen 的 **ggforce** 和 **gganimate**，Kamil Slowikowski 的 **ggrepel**，Edzer Pebesma 的 **sf** 和 Claire McWhite 在 **colorspace** 和 **colorblindr** 上的工作，模拟 R 装配图中的色觉缺陷。

有几个人对本书的草稿版本提供了有用的反馈。最重要的是，O'Reilly 的编辑 Mike Loukides 和 Steve Haroz 都阅读并评论了每一章。我还收到了 Carl Bergstrom，Jessica Hullman，Matthew Kay，Edzer Pebesma，Tristan Mahr，Jon Schwabish 和 Hadley Wickham 的有益评论。 Len Kiefer 的博客和 Kieran Healy 的书和博客文章为图表制作和数据集提供了许多灵感。许多人指出了小问题或错别字，包括 Thiago Arrais，Malcolm Barrett，Jessica Burnett，Jon Calder，AntônioPedroCamargo，Daren Card，Kim Cressman，Akos Hajdu，Andrew Kinsman，Will Koehrsen，Alex Lalejini，John Leadley，Katrin Leinweber，Mikel Madina，Claire McWhite，S'busiso Mkhondwane，Jose Nazario，Steve Putman，MaëlleSalmon，Christian Schudoma，James Scott-Brown，Enrico Spinielli，Wouter van der Bijl 和 Ron Yurko。

我还要更广泛地感谢 tidyverse 和 R 社区的所有其他贡献者。确实存在可用于任何可视化挑战的 R 包。所有这些包都是由数千名数据科学家和统计学家组成的广泛社区开发的，其中许多都以某种形式为本书的制作做出了贡献。