适当的调整图表样式可以大大增强图表"讲故事"的能力。实际工作中可能需要调整很多东西,因此本篇不可能涵盖所有图表样式。本篇将介绍一些最有用的基本知识:更改图形大小、颜色和字体大小;加标题;以及移除轴边框。
数据源同上篇,依旧是葡萄酒评分表。
import pandas as pd
import matplotlib.pyplot as plt
# 葡萄酒杂志评论数据
reviews = pd.read_csv("kaggle/winemag-data_first150k.csv", index_col=0)
head = reviews.head(3)
回想一下第一篇中的柱形图:
reviews['points'].value_counts().sort_index().plot.bar()
这图似乎过于普通,图表标题也没有,x轴上标签字号也有点小,下面我们来改造一下。
import seaborn as sns
ax = reviews['points'].value_counts().sort_index().plot.bar(
figsize=(10, 5),
color='mediumvioletred',
fontsize=16
)
ax.set_title("Rankings Given by Wine Magazine", fontsize=20)
sns.despine(bottom=True, left=True)
plt.tight_layout()
调整之后,比我们开始的时候更清晰,能更好地把分析结果传达给读者,下面逐一说明一下参数。
1.图表大小,使用figsize(width, height)参数
figsize=(10, 5)
2.修改颜色 ,使用 color 参数
color='mediumvioletred'
取值表见文末链接3.设置标签文字大小 ,使用fontsize参数
fontsize=16
4.设置标题和大小
plot.bar(title='xxx')
但是标题文字大小的设置,pandas没有给出设置参数。在底层,panda数据可视化工具是基与matplotlib的,这里可以借助matplotlib的 set_title函数实现
ax = xxx.plot.bar()
ax.set_title('title', fontsize=20)
变量ax 是一个AxesSubplot对象。
5.去掉图表黑色边框
sns.despine(bottom=True, left=True)
这里引入一个新的库seaborn ,后续会专门介绍。
6.图形完整显示,有时候图表标签会被遮挡
plt.tight_layout()
仅仅检查坐标轴标签、刻度标签以及标题的部分。
7.带中文的图表需要设置字体,本文中未使用,特单独说明
import matplotlib
font = {
'family': 'SimHei'
}
matplotlib.rc('font', **font)
总结
比起死记 style 参数,知道如何快速查找所需style的技能更重要。要善用API文档和 StackOverflow。
在matplotlib中命名颜色 color 参数取值参照
Plot Formatting pandas可视化api,可页面搜索Plot Formatting定位到 style处。
seaborn 图表样例
matplotlib图表样例
参考资料
https://www.kaggle.com/residentmario/styling-your-plots