概述
Axes 标签对于读者理解图表非常重要,它描述了图表中展现的数据内容。通过向 axes 对象添加标签,可以有效理解图表所表达的内容。首先来了解一下 matplotlib 是如何组织图表的。最上层是一个 Figure 实例,包含绘图中所有可见和不可见的内容。Figure 实例包含了一个 Axes 实例字段 Figure. Axes,该实例包含了所有绘图相关的东西,如所有的线、点、刻度和标签。举一个例子,调用 pyplot.plot()
,就会向 【Axes. Lines】 列表中添加一个 Line2D 对象;调用 pyplot.plot()
方法就会向 【Axes. Patches】 列表中添加绘制的多个 patches 对象(patches 可以理解是一个用颜色填充的图形对象)。
Axes 实例也包含了 XAxis 和 YAxis 实例,分别对应 X 轴和 Y 轴,XAxis 和 YAxis 管理着坐标轴、标签、刻度、刻度标签定位器和格式器,在实际使用中不用使用 Axes.xaxis()
和 Axes.yaxis
调用坐标轴实例,matplotlib 提供了一个 helper 方法来控制这些标签,即 pyplot.xlabel()
和 plt.ylabel()
。
示例
接下来我们以一个示例来演示一下,在下面的代码中我们做了以下事项:
- 添加标题和 axes 标签;
- 添加标题和 axes 的阴影效果;
- 设置透明度。
import matplotlib.pyplot as plt
from matplotlib import patheffects
import numpy as np
# 初始化数据
data = np.random.randn(70)
# 默认字体大小
DEFAULT_FONT_SIZE = 18
# 默认offset
DEFAULT_OFFSET_XY = (1, -1)
# 默认颜色
DEFAULT_RGB_COLOR = (1.0, 0.0, 0.0)
# 默认透明度
DEFAULT_ALPHA = 0.8
plt.plot(data)
title = "Figure Title"
x_label = "X Axis"
y_label = "Y_axis"
title_text_obj = plt.title(title, fontsize=DEFAULT_FONT_SIZE, verticalalignment="bottom")
title_text_obj.set_path_effects([patheffects.withSimplePatchShadow()])
pe = patheffects.withSimplePatchShadow(offset=DEFAULT_OFFSET_XY, shadow_rgbFace=DEFAULT_RGB_COLOR,
alpha=DEFAULT_ALPHA)
xlabel_obj = plt.xlabel(x_label, fontsize=DEFAULT_FONT_SIZE, alpha=0.5)
xlabel_obj.set_path_effects([pe])
ylabel_obj = plt.ylabel(y_label, fontsize=DEFAULT_FONT_SIZE, alpha=0.5)
ylabel_obj.set_path_effects([pe])
plt.show()
绘图结果如下:
在上面的代码中有几点需要强调。路径阴影(path effects)是 matplotlib.patheffects
模块的部分内容,在 matplotlib 中 Text 类实例以及 Patch 类实例都支持设置阴影效果,这些类将会在我的另一个专栏可视化之路将会详细介绍。在设置文字属性时,一般传递一个字典 FontDict,而不是向上面的事例中那样仅仅传递一个 fontsize
,做好封装是十分重要的,这会让代码具有可读性。Matplotlib 调用 helper 函数都会返回相应的实例,例如调用 pyplot.xlabel()
和 pyplot.ylabel()
会返回 Text 实例。
往期回顾
- 【matplotlib】可视化解决方案——如何向图表中添加数据表
- 【matplotlib】可视化解决方案——如何更改绘图区域背景颜色
- 【matplotlib】可视化解决方案——如何使用数学公式
- 【matplotlib】可视化解决方案——绘图刻度设置
- 【matplotlib】可视化解决方案——共享绘图区域问题
- 【matplotlib】可视化解决方案——子图设置大标题问题解决方案
- 【matplotlib】可视化解决方案——子图间距问题解决方案
- 【matplotlib】可视化解决方案——capstyle参数详解
- 【matplotlib】可视化解决方案——joinstyle参数详解
- 【matplotlib】可视化解决方案——linestyle参数详解
- 【matplotlib】可视化解决方案——柱状图标注问题
文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!