众所周知,Python 的应用是非常广泛的,今天我们就通过 matplotlib 库学习下如何制作精美的子弹图
什么是子弹图
一个子弹图约定俗成的定义
子弹图使用长度/高度、位置和颜色对数据进行编码,以显示与目标和性能带相比的实际情况
我们先来看下子弹图大概张什么样子
子弹图具有单一的主要度量(例如,当前年初至今的收入),将该度量与一个或多个其他度量进行比较以丰富其含义(例如,与目标相比),并将其显示在性能的定性范围的背景,例如差、满意和好。 定性范围显示为单一色调的不同强度,使色盲者可以辨别它们,并将仪表板上的颜色使用限制在最低限度
好了,差不多这就是子弹图的应用场景和绘制标准了,下面我们就开始制作吧
构建图表
思路大致是,可以使用堆叠条形图来表示各种范围,并使用另一个较小的条形图来表示值,最后,用一条垂直线标记目标
可以看出,我们需要多个组件图层,使用 matplotlib 来实现会比较方便
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.ticker import FuncFormatter
%matplotlib inline
这里我们还导入了 Seaborn,是因为 Seaborn 有一些非常有用的工具来管理调色板,利用这种功能比尝试以其他方式复制它更容易
我们需要生成调色板的主要原因是我们很可能希望为各种定性范围生成视觉上吸引人的配色方案,直接使用 seaborn 来完成会方便很多
在下面的例子中,我们可以使用 palplot 便利函数来显示 5 种绿色色调的调板
sns.palplot(sns.light_palette("green", 5))