如何更改 Matplotlib 中图例条目之间的垂直间距?

matplotlibpythondata visualization

图例在传达有关绘制元素的信息方面起着至关重要的作用,这些元素主要包含在 matplotlib 中,matplotlib 是一个用于数据可视化的流行 Python 库,但有时在处理复杂的可视化时,图例条目之间的默认垂直间距可能并不理想。本文探讨了修改和自定义 Matplotlib 中图例条目之间的垂直间距的技术,使用户能够增强其图表的可读性和美感。

Matpltlib 图表中的图例是什么?

在 Matplotlib 图表中,图例是提供图表中显示的各种元素的解释的关键或指南。它有助于识别图表中使用的不同颜色、标记或线条样式的含义。图例通常包括与每个元素相关的标签或符号及其相应的描述。它允许查看者了解图表中数据或类别的表示。图例是传达信息和提高图形可解释性的重要组件。

如何更改 Matplotlib 中图例条目之间的垂直间距?

要更改 Matplotlib 中图例条目之间的垂直间距,您可以按照以下步骤操作 -

  • 导入所需的库 -

import matplotlib.pyplot as plt
  • 创建绘图并添加图例 -

# 绘图代码...
plt.legend()
  • 获取图例句柄和标签 -

handles, labels = plt.gca().get_legend_handles_labels()
  • 创建一个修改了垂直间距的新图例 −

# 指定所需的垂直间距(根据需要调整值)
spacing = 1.0

# 创建一个修改了间距的新图例
new_legend = plt.legend(handles, labels, loc='upper right', ncol=1, frameon=False, bbox_to_anchor=(1.1, 1.1), title='Legend', borderpad=spacing)

在上面的代码中,spacing 是一个变量,表示图例条目之间的所需垂直间距。您可以根据需要调整此值。 bbox_to_anchor 参数设置图例的位置,您可以修改其坐标以将其适当地放置在您的图中。

  • 删除旧图例 −

# 删除旧图例
plt.gca().get_legend().remove()
  • 将新图例添加到图中 −

# 将新图例添加到图中
plt.gca().add_artist(new_legend)
  • 显示图 −

plt.show()

按照这些步骤,您可以根据自己的喜好自定义 Matplotlib 中图例条目之间的垂直间距。

以下是如何使用带有散点图的鸢尾花数据集更改 Matplotlib 中图例条目之间的垂直间距的程序示例 -

示例

import matplotlib.pyplot as plt
import numpy as np

# 加载示例数据集(鸢尾花数据集)
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names

# 绘制数据
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')

# 创建具有自定义垂直间距的图例
legend = plt.legend(target_names, title='Species', loc='lower right')

# 设置图例条目之间的垂直间距
legend.get_frame().set_linewidth(0.0) # 删除图例周围的边框
legend.get_title().set_fontsize('12') # 设置图例标题的字体大小
for handle in legend.legendHandles:
handle.set_sizes([30]) # 设置图例条目的标记大小
legend._legend_box.align = "left" # 垂直对齐图例条目

# 调整图例条目之间的垂直间距
legend._set_loc(1)
plt.subplots_adjust(right=0.8)

# 显示图表
plt.show()

输出

要更改图例条目之间的垂直间距,我们使用 legend.get_frame()、legend.get_title() 和 legend.legendHandles 访问图例属性。我们删除图例周围的边框、设置图例标题的字体大小、设置图例条目的标记大小,并垂直对齐图例条目。 legend._set_loc(1) 行调整垂直间距,plt.subplots_adjust() 用于调整图的布局。

以下是如何使用带条形图的鸢尾花数据集更改 Matplotlib 中图例条目之间的垂直间距的程序示例 -

示例

import matplotlib.pyplot as plt
import numpy as np

# 加载示例数据集(鸢尾花数据集)
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
target_names = iris.target_names

# 计算每个物种的平均萼片长度
avg_sepal_length = []
for i in range(len(target_names)):
avg_sepal_length.append(np.mean(X[y == i, 0]))

# 绘制数据
plt.bar(target_names, avg_sepal_length)
plt.xlabel('Species')
plt.ylabel('Average Sepal Length')

# 创建具有自定义垂直间距的图例
legend = plt.legend(['Average Sepal Length'], loc='upper right')

# 设置图例条目之间的垂直间距
legend.get_frame().set_linewidth(0.0) # 删除图例周围的边框
legend.get_title().set_fontsize('12') # 设置图例标题的字体大小
legend._legend_box.align = "left" # 垂直对齐图例条目

# 调整图例之间的垂直间距条目
legend._set_loc(1)
plt.subplots_adjust(right=0.8)

# 显示图
plt.show()

输出

结论

总之,可以通过访问和修改图例对象的属性来更改 Matplotlib 中图例条目之间的垂直间距。通过删除图例的边框、调整标题的字体大小以及垂直对齐图例条目,我们可以根据自己的喜好自定义间距。这样可以更好地控制图例在图中布局和呈现。通过采用这些技术,我们可以增强图表的清晰度和视觉吸引力,使其更具信息量,更吸引观众。


相关文章