一个用Storytelling将数据变为可视化图表的具体案例。
数据展示和初始可视化
用到的库如下:
1 | # Data Handling |
用到的数据集是来自saeborn的mpg(汽车油耗数据):
1 | # Load in data: |
绘制初始柱状图:
1 | px.bar(mpg, x='Year', y='Average MPG') |
但仅仅是这样的图表并不适合出现在报告里。
色彩Colors
更新图表的颜色方案:
1 | # Generate base plot: |
这里将平均MPG和颜色值绑定展示,效率低的年代为红色,效率高的年代为绿色。Plotly的更多色带方案:https://plotly.com/python/builtin-colorscales/
另外因为y值和颜色深浅表达的变量是一样的,所以色彩图例是多余的,这里移除了色彩图例。还把Plotly的主题改为‘plotly_white’。更多主题方案见:https://plotly.com/python/templates/
标注Labels
下一步是标注轴线:
1 | # Label axes,这里将x轴的dick设为1,确保每个柱子下面都有对应的值标注 |
Poltly中默认用列名作为轴线标注, update_xaxes() 和 update_yaxes()进一步优化标注。
更新图表标题:
1 | # Update plot layout: |
update_layout可以传入HTML样式代码来控制标题样式,<b>
加粗,<br>
换行,<i>
斜体,<sup>
代表图表副标题。
然后用 add_annotation() 函数在图表上注释数据源。
1 | # Add annotation on data source: |
效果如下:
增加注释
为了给图表添加更多的内容,下面创建一条水平线,代表1970年至1982年的平均MPG,并增加描述该线的注释框:
1 | # Add average MPG across era: |
add_annotation用来创建一个边框和箭头,x、y用来确定其位置。
想要强调1975年到1979之间有明显的改善,下面增加highlight box:
1 | # Add highlight box: |
add_vrect增加一个矩形框,突出特定部分。代码放在add_hline之后,它展示在辅助线之上。
假设该图表是一项研究的一部分,该研究发现发动机尺寸的减小直接促进了MPG的改善。幸运的是,Seaborn MPG数据包括发动机排量数据。通过下面的一些数据和新的注释,为图表补上最后一块。
1 | # Data prep: |
计算了70年代(70到79)以及80年代(80、81和82)的平均发动机排量,然后传入一个文本字符串,在add_annotation()函数中展示。
总结
- 少即是多,图表上下文中能表达的信息就不要添加到图表中。
- 独立的信息图需要更多的信息,不过在口头陈述和书面报告中的图表不需要太多的信息内容。
- 配色、字体的选择和大小会影响可读性。
- 如果受众不能理解图表,那不是受众的错。
完整代码:
1 | # Load in Libraries: |