【matplotlib】可视化解决方案——如何设置轴标签的透明度和大小

概述

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()。

示例

接下来我们以一个示例来演示一下,在下面的代码中我们做了以下事项:

  1. 添加标题和 axes 标签;
  2. 添加标题和 axes 的阴影效果;
  3. 设置透明度。
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 实例。

往期回顾

  1. 【matplotlib】可视化解决方案——如何向图表中添加数据表
  2. 【matplotlib】可视化解决方案——如何更改绘图区域背景颜色
  3. 【matplotlib】可视化解决方案——如何使用数学公式
  4. 【matplotlib】可视化解决方案——绘图刻度设置
  5. 【matplotlib】可视化解决方案——共享绘图区域问题
  6. 【matplotlib】可视化解决方案——子图设置大标题问题解决方案
  7. 【matplotlib】可视化解决方案——子图间距问题解决方案
  8. 【matplotlib】可视化解决方案——capstyle参数详解
  9. 【matplotlib】可视化解决方案——joinstyle参数详解
  10. 【matplotlib】可视化解决方案——linestyle参数详解
  11. 【matplotlib】可视化解决方案——柱状图标注问题
    在这里插入图片描述

文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!