考点2.1.1 Create a bar chart
考点2.1.7 Create a stacked bar
考点2.3.4 Use bins and histograms

柱状图的原理

在谈及各种操作之前,首先我要跟你讲讲柱状图是如何给你提供Insights的。我们使用柱状图的原理是什么。我不想教你一堆技巧最后回过头来,我问你为什么选择这种图表形态的时候你支支吾吾回答不出来。你回答不出来就说明你没有根本上理解柱状图的优势。


柱状图的基本原理就是通过将数值转化成Bar的长度将我们所要显示的数值具体化,从而使人能够更加容易感知数值之间的差距。举个例子,如果单独看120和240,你很难感觉到240是120的两倍,但是如果我们能够看到两栋挨着的楼,一栋120m高的楼和一栋240m高的楼,你就能非常具体的感知到这两个数值的差距。

我们的大脑天生并不不具备这种感知的能力。我们对能看到的东西的感受更直接。而120和240作为数字来说,实在是太相似,乍一看感觉不出那么大差距。

柱状图的优势

了解一个图表的优势就是了解一个图表的使用场景,对于一名Tableau Developer来说,选择合适的图表来显示你想要表达的信息是基本功之一。

1.排序明显

书接上回,由于我们现在是通过Bar的长度来感知数据,那么当有很多数据时,Bar Chart是最适合展示数值大小之间的对比的。也是最适合展示大小顺序的图表。

以下边的这个Bar Chart为例,你几乎可以毫不费力的提炼出下边这些所谓的insightts:

1. 谁是第一名,谁是最后一名。

2.第一名领先第二名多少

3.从第一名到第三名,数据下降的非常快,然后数据下降的速度变缓

4.最后一名比第一名的一半还少

2. 布局灵活

柱状图是非常灵活的一种图表, 它可以和多种其他图表进行组合显示更复杂的信息。

2.1 柱状图的方向

柱状图是为数不多的既可以横向显示又可以纵向显示的图表。 横向显示的时候,使用者可以清晰的读取从上到下的各种信息。以上边的这个截图为例,从左边读取Customer Name,从右边读取数据,非常符合人们阅读的习惯。

当横向显示的时候,这个柱状图就会变成下边的这个形态. 横向的柱状图非常查看整体的数据的走势和形态分布.

以下边的这个图为例,每个bar的高度代表了每个customer的销售额, 从排名前几的顾客的销售额来看,整体的销售额都还是比较平均的,没有出现大多数销售额都集中在前几名的这种趋势. 横向的Bar Chart的这个优点进一步放大就是我们后边会提到的一种图表 Pareto Chart 帕累托表

3. 赏心悦目

3.1 由于Bar占据的图表面积大,Bar本身的颜色可以从从深到浅来显示数值的变化. 相对比折线图,即使你用不同的颜色标注不同的线, 那种区别也不是非常明显,毕竟跟Bar相比, 折线所占据的面积就只有那么一点点.

我们可以选择在Bar的末端显示更多信息但是并不会跟Bar重叠

我用下边的这个截图来举个例子🙋‍♀️🌰, 我在Bar的末端添加了一个label, 这个label出现在Bar的末尾, 分别显示了这个Customer的销售额和Profit. 这种label 并不会覆盖在Bar的上边,他们之间不会重叠,所以不管是哪个bar,我都可以读取Label上的信息.


使用Show Me Button创建一个Horizontal Bar Chart

我在前边介绍Tableau界面的一课当中就提到过Show Me Button. Show Me Butoon是前期最适合新手创建各种基本图表的方式.

首先我们点击我们想要在Bar Chart当中显示的那个Measure. 在下边的动图当中我选择了Sales.
然后把鼠标移动到右侧,我们会发现Bar Chart的那个图标就已经点亮了.我们在下边的提示当中可以看到, For Horizontal Bars try 0 or more Dimensions, 1 or more Measures.

这个提示非常的重要,这代表着如果你想要创建一个bar chart, 你需要至少一个measure, 0个Dimension. 如果你移动到它旁边的stacked bars,你会发现Stacked Bars至少需要一个Dimension和一个Measure才可以.

假设我们需要显示Sales By Customers, 我们使用Ctrl, 同时选中Sales和Customer Name 这两个Column, 然后选中右侧Show Me Button下边点亮的Horizontal Bar Chart, 我们的 Sales By Customers的chart就做好了.

多个Dimension和多个Measure的Horizontal Bar Chart

现在让我们在前边Horizontal Bar Chart的基础上添加更多的Dimension和Measure 看看这个Bar Chart会变成什么样. 假设我们想同时选择Customer Name和Segment作为我们要展示的Dimension; Profit和Sales作为展示的Measure.

Step 1: 用Ctrl同时选中[Customer Name],[Segment],[Profit]和[Sales] 四个Column Name.

Step 2: 在右侧点击Show Me Button

Step 3:点击Show Me Button下边的Horizontal Bar Charts

在上边的动图当中我们可以看出, 在创建完这个Horizontal Bar Chart之后,我们通过调整Column在顶端Rows和Columns的位置就可以改变图表中这些column所对应的位置.

使用Marks对Horizontal Bar进行加工

  1. 理解Marks所对应的控制区域


在加工之前我们先观察一下当前这个Bar Chart的Marks区域

首先Marks下边有三块区域, 第一个写的是All, 第二个写的是Sum(Sales), 第三个写的是Sum(Profit). 他们所有的选项都是一模一样的. 那么作为初学者的你到底应该选哪个. 答案非常简单, All 就是所有的Bar, Sum(Sales) 就只针对Sales这一个Bar 同理SUM(Profit)就只针对Profit这一个column.

在下边的这个动图当中, 我将用颜色来测试这三个Marks的区域分别都控制什么. 为了测试,我又增加了一个column [disount].

首先我点击All下边的Color, 然后选择一个颜色. 此时你会发现我们所有的Bar都改变了颜色.

我接下来依次改变 Sales, Profit, Discount的颜色, 此时每个Bar都有自己独特的颜色.

当我此时回到All, 然后再点击一个颜色的时候, 这个时候我们所有之前设置的每个column自己的颜色消失了, 又重新回归统一的颜色了!

这是一个非常重要的知识点, 颜色的控制并不是说如果你设置了单个column的颜色之后它就永远不变了.

最终图表显示的颜色完全取决于你最后一步的操作

2. 颜色 Color

2.1 让Bar的颜色根据数值从浅到深

在前边用颜色测试的时候你应该也已经体验到了, 只要点击Color, 然后选择颜色我们就可以控制每一个个Bar的颜色, 但是到这一步,所有Bar的颜色还都是同一个颜色,我接下来展示如何让Bar根据数值进行变色.

在上边的动图当中, 我先用Ctrl把Sum(Sales) 复制到Sales当中, Bar的颜色就已经开始根据数值大小进行变色了, 在右侧你可以看到一个color legend, 表示5是最小值,颜色趋近于白色, 而25,043是最大值, 是深蓝色.

我接下来点击这个Color的这个Mark Card. 在弹窗当中,我点击最右侧的蓝色方块,然后将这个蓝色替换成了绿色,这时候你可以看到最深的颜色从绿色变成了绿色.

3. Size 尺寸

首先这里所写的Size并不是Bar Chart的长度,而是它纵向的宽度. 因为Bar的长度是由Measure的数值决定的,已经不能做任何更改了.

其次,到这我想你自己都已经知道如果想让每个Bar的size根据数值调整的话,应该怎么做了. 当我们不拖动任何column到size上时, Size控制的所有Bar的统一宽度,如果拖一个column到size上, 那么就是那个column的数值来控制bar的尺寸. 你只要随便每个选项调整一下就知道它们具体控制的是什么了.

这时候需要注意的是, 如果你不准备让Bar Size都一样的话, 那你就要确保你的Bar Size所使用的column和当前这个Bar所显示的Column一定是一样的.
千万当前显示的是Sales, 但是Bar的粗细用其他Measure比如Profit 或者是Discount来控制. 除非你特别标注!
我个人不推荐在Bar Chart里使用不同宽度的bar,因为Bar Chart的重点就是通过长度来对比数据之间的大小,如果再加上宽度 再加上颜色的话, 非常容易产生干扰, 膈应人.

4. Label 标注

给Bar Chart加上标注来显示当前这个Bar所代表的信息是一种非常常见的做法. Label也同时能够解决Bar Chart信息流不流畅的问题

在前边我们所有的Bar Chart都是把Customer Name显示在左侧, 然后是Bar,然后是数字. 但是我作为用户从左往右看的时候, 我是先看到名字,然后一大段Bar, 然后末尾看到一个数. 就是有一种好好的一条信息但是因为这个Bar的存在整稀碎的感觉.

在下边这个截图里边, 我就是把Customer Name先给藏起来,然后把Customer Name和Sales直接都显示在Bar末端的Label当中. 这回我定睛一看,这一个Bar 最长, 这银儿是谁啊, 啊Raymond 老Ray啊, 他花多钱啊, 一万五千多.

整个flow就是俩字丝滑.

在下边的这个动图当中, 我将从头展示上边的这个图是如何创建的

5. Sort 排序

写到这你是不是纳闷不是应该到了Detail和Tooltip了么. 但是这俩其实在Bar Chart的部分一般用不上而排序这么重要的功能必须在Bar Chart介绍一下.

5.1 排序按钮

在Tableau界面-按钮那一课我就已经介绍过在Tableau界面那一排按钮当中有两个快速排序的按钮, 一个是从大到小, 一个是从小到大. 你要是没印象了,就是右边插图这哥俩.

我这就稍微偷懒一下, 在上边的这个截图里, 我其中有一步操作就是用快速排序按钮把我们的Sales从大到小快速排列.

如果是多个Column, 比如我们同时显示Sales, Profit, Quantity的时候, 这个按钮会按照Rows里显示的第一个Measure 进行排序.

下一步学什么?

  • Bar Chart 还有很多更复杂的形态, 比如stacked bar chart, 比如 side by side bar等等

  • 颜色: 如何设置颜色让positive value显示绿色, 让negative显示红色?

  • 标注: 如何控制标注的位置和标注的格式?

  • 排序: 我们当前只是学到了按照第一个column来排序,但是如何可以让用户自己选择按照哪个column来排序呢?