返回介绍

第43单元 精通绘图装饰

发布于 2024-01-28 22:01:16 字数 2088 浏览 0 评论 0 收藏 0

你可以用pyplot实现对绘图全方面的控制。

可以使用函数xscale(scale)和yscale(scale)来设置和更改轴的刻度("linear"和"log"),可以使用函数xlim(xmin, xmax)和yimim(ymin, ymax)来设置和更改轴的上下限。

可以设置和更改字体、图形和背景颜色,以及字体和点的大小和样式。

还可以使用annotate()添加注释,用arrow()添加箭头,用legend()添加图例。通常来说,要了解完整的装饰函数及其参数列表,需要参阅pyplot文档,但是目前你至少可以将一些箭头、注释和图例添加到你已经熟悉的NIAAA图中:

pyplot-legend.py

import matplotlib, matplotlib.pyplot as plt
import pickle, pandas as pd

# 在此之前NIAAA frame已完成了pickle操作
alco = pickle.load(open("alco.pickle", "rb"))

# 选择合适的数据
BEVERAGE = "Beer"
years = alco.index.levels[1]
states = ("New Hampshire", "Colorado", "Utah")

# 选择一个优美的绘图样式
plt.xkcd()
matplotlib.style.use("ggplot")

# 绘制图表
for state in states:
    ydata = alco.ix[state][BEVERAGE]
    plt.plot(years, ydata, "-o")
    # 添加带箭头的注释
    plt.annotate(s="Peak", xy=(ydata.argmax(), ydata.max()),
                 xytext=(ydata.argmax() + 0.5, ydata.max() + 0.1),
                 arrowprops={"facecolor": "black", "shrink": 0.2})

# 添加标签和图例
plt.ylabel(BEVERAGE + " consumption")
plt.title("And now in xkcd...")
plt.legend(states)

plt.savefig("../images/pyplot-legend-xkcd.pdf")

这里显示的三线图表明了三个州的啤酒消费动态(实际上,这三个州就是啤酒消费量最多、中等和最低的州)。

 关于Unicode的说明

如果你的绘图包含Unicode字符(即非拉丁字符),那么你可能需要在绘制文本之前更改默认字体,具体的方法是将函数调用matplotlib.rc("font", family ="Arial")添加到绘图脚本的第一行。

最后,可以使用函数xkcd()将图案的风格改为流行的xkcd3 Web漫画风格。(该函数仅对在调用它之后添加的绘图元素产生影响。)由于某些原因,我们无法将图形保存为PostScript文件,但其他格式的文件都是正常的。尽管如此,你应该避免在官方的演示中包含xkcd样式的绘图,因为它们看起来好像是出自醉汉之手(参见下图)。不管怎样,这个演示本身就是关于酒精消费量的。

3xkcd.com

pyplot模块本身已经非常强大了,与pandas相结合后还会更加出色,下面我们就来见识一下。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文