在本系列关于基于 Python 的绘图库的文章中,我们将概念性地了解使用 pandas(非常流行的 Python 数据操作库)进行绘图。 Pandas 是 Python 中用于可扩展地转换数据的标准工具,并且也已成为从 CSV 和 Excel 格式导入和导出的流行方式。
最重要的是,它还包含一个非常好的绘图 API。 这非常方便——您已经将数据放入 pandas DataFrame 中,那么为什么不使用同一个库来绘制它呢?
在本系列中,我们将在每个库中制作相同的多条形图,以便我们可以比较它们的工作方式。 我们将使用的数据是 1966 年至 2020 年英国选举结果

数据自行绘制
在我们进一步深入之前,请注意您可能需要调整您的 Python 环境才能运行此代码,包括以下内容。
数据在线可用,可以使用 pandas 导入
import pandas as pd
df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv')
现在我们准备好了。 我们在本系列文章中看到了一些非常简单的 API,但 pandas 必须荣登榜首。
要绘制一个条形图,其中每个政党一组,x 轴上是 year
,我只需要这样做
import matplotlib.pyplot as plt
ax = df.plot.bar(x='year')
plt.show()
四行代码——绝对是我们在本系列中创建的最简洁的多条形图。
我正在以宽格式使用我的数据,这意味着每个政党一列
year conservative labour liberal others
0 1966 253 364 12 1
1 1970 330 287 6 7
2 Feb 1974 297 301 14 18
.. ... ... ... ... ...
12 2015 330 232 8 80
13 2017 317 262 12 59
14 2019 365 202 11 72
这意味着 pandas 自动知道我希望如何对条形图进行分组,如果我希望以不同的方式对它们进行分组,pandas 可以轻松地重构我的 DataFrame。
与 Seaborn 一样,pandas 的绘图功能是 Matplotlib 之上的抽象,这就是为什么您调用 Matplotlib 的 plt.show()
函数来实际生成绘图。
这是它的外观

看起来很棒,特别是考虑到它有多么容易! 让我们对其进行样式设置,使其看起来像 Matplotlib 示例。
样式设置
我们可以通过访问底层的 Matplotlib 方法轻松调整样式。
首先,我们可以通过将 Matplotlib 颜色图传递到绘图函数中来为条形图着色
from matplotlib.colors import ListedColormap
cmap = ListedColormap(['#0343df', '#e50000', '#ffff14', '#929591'])
ax = df.plot.bar(x='year', colormap=cmap)
我们可以使用绘图函数的返回值来设置轴标签和标题——它只是一个 Matplotlib Axis
对象。
ax.set_xlabel(None)
ax.set_ylabel('Seats')
ax.set_title('UK election results')
这是现在的样子

这几乎与上面显示的 Matplotlib 版本相同,但代码只有 8 行而不是 16 行! 我内心的代码高尔夫球手非常高兴。
抽象必须是可逃逸的
与 Seaborn 一样,能够深入访问 Matplotlib API 进行详细调整真的很有帮助。 这是提供抽象逃生舱口使其既强大又简单的绝佳示例。
本文基于 Anvil 博客上的如何使用 Pandas 绘制图表,并经许可重复使用。
评论已关闭。