Matplotlib中的titles(标题)、labels(标签)和legends(图例)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 本文讨论Python的Matplotlib绘图库中可用的不同标记选项。

Matplotlib是一个Python中常用的绘图库,用于创建各种类型的图表。在Matplotlib中,你可以使用titles(标题)、labels(标签)和legends(图例)来增强你的图表。本文讨论Python的Matplotlib绘图库中可用的不同标记选项。

Figure, subplots 和axes列表

在Matplotlib中,Figure是整个图形窗口,它可以包含一个或多个子图(Axes)。Axes是实际绘图区域,而Figure则是包含所有Axes、标题、标签等元素的容器。

在使用可以使用Matplotlib时可以使用plt.subplots()命令一次创建多个子图的占位符,输入参数nrows和ncols定义要返回的行和列的数量。返回数组包含ncols=2个元素的nrows=2个列表。每个元素都引用一个子图。

 import matplotlib.pyplot as plt

 fig, axs = plt.subplots(
   nrows=2, ncols=2, figsize=(10, 7), sharex=True, sharey=True
 )

 # Fig = Figure object,
 # axs = list of axes
 # axs = [[ax1, ax2], 
 #        [ax3, ax4]]

axes和labels

axis指的是子图,通常称为ax的轴对象中的x轴和y轴的一个组合。我们使用列表推导遍历所有轴,并使用ax.set_xlabel("whatever")为每个子图分配xlabel和ylabel。可以通过调用ax2 = ax.twinx()来创建另一个y轴;ax2.set_ylabel(“Second y-axis”);但这会使绘制图例等事情变得复杂,因为现在绘图配置在同一子图中被分成两个容器,所以我们一般都会将一个x轴和y轴放在一个子图中,也就是我们上面说的一个组合。

 i = 1
 for ax in [item for sublist in axs for item in sublist]:
   ax.set_xlabel(f"xlabel {i}")
   ax.set_ylabel(f"ylabel {i}")
   i+=1

Titles

每个子图最多可以有三个标题Titles 。默认情况下,子图标题显示在子图的上方。使用loc参数可以将唯一的标题与子图的左边缘或右边缘对齐,也可以向子图添加其他标题。有时将主标题左对齐并添加更多信息(如数据源)可能会很有用,或者使用不同的字体或较小的字体右对齐。

 ax.set_title(f"Title {i} left", loc="left", fontsize=8)
 ax.set_title(f"Title {i} right", loc="right", fontsize=10)
 ax.set_title(f"Title {i} center", loc="center", fontsize=14)

在Matplotlib中,set_title和set_ylabel等函数可以将字体、字体大小和字体粗细作为参数或作为一个名为fontdict的字典。

 ax.set_title(f"Title {i} left", loc="left", fontdict=dict(
   size=8, 
   family="Times New Roman", 
   weight="bold")
 )

图的Title 和label

图标题在Matplotlib中称为suptitle。默认情况下,它是一个标题,在最上面的子标题中间对齐,字体大小比普通的子标题大。

与轴标签类似,y轴和x轴也有替代标签。默认情况下,Supylabel以居中对齐的方式出现在图的左侧,而supxlabel以居中对齐的方式出现在图的底部。

可以自定义图形标签和标题的位置,方法是使用x和y参数,ha用于水平对齐,va用于垂直对齐。x和y所指向的图坐标是从图的左下角开始的0到1之间的数字。suptitle的默认值是x=0.5和y=0.98,这使得它位于顶部和中间。

 fig.suptitle("Suptitle", fontsize=20)
 fig.supylabel("Supylabel", fontsize=16)
 fig.supxlabel("Supxlabel", fontsize=16)

子的图例legends

图例是子图中的辅助框,它告诉我们哪些数据点属于哪个逻辑组。当在单个子图中有多条线、多组标记等时,它们尤其有用。当调用ax.legend()时,每个没有以下划线开头的标签且包含在轴对象中的艺术家都会生成一个轴图例条目。像ax.scatter()和ax.plot()这样的绘图函数将label作为参数,默认情况下,这是创建图例时使用的标签。

 ax.scatter(
   np.random.random(30) * 0.45 + 0.3,
   np.random.random(30) * 0.45 + 0.3,
   label="label for data",
   alpha=0.3,
 )
 ax.legend(title=f"Legend {i} title", fontsize=8)

如果子图包含多个轴,例如当调用ax.twinx()时,需要在绘制图例之前收集对艺术家的引用并将它们组合起来,以避免在同一子图中绘制两个图例。

 lines_ax = ax.get_lines() 
 lines_ax2 = ax2.get_lines() 

 lines = lines_ax + lines_ax2 
 labels = [line.get_label() for line in lines]

 ax.legend(lines, labels, title=f"Legend {i} title", fontsize=8)

总结

通过上面的介绍,我们应该对这几个术语有了一定了解,那么我们来看看下面的代码

 import matplotlib.pyplot as plt
 import numpy as np

 fig, axs = plt.subplots(
   nrows=2, ncols=2, figsize=(10, 7), 
   sharex=True, sharey=True, squeeze=True
 )

 i = 1
 for ax in [item for sublist in axs for item in sublist]:
   ax.set_xlabel(f"xlabel {i}")
   ax.scatter(
     np.random.random(30) * 0.45 + 0.3,
     np.random.random(30) * 0.45 + 0.3,
     label="label for data",
     alpha=0.3,
   )
   ax.legend(title=f"Legend {i} title", fontsize=8)
   ax.set_xlim(0, 1)
   ax.set_ylim(0, 1)
   ax.set_title(f"Title {i} left", loc="left", fontsize=8)
   ax.set_title(f"Title {i} right", loc="right", fontsize=10)
   ax.set_title(f"Title {i} center", loc="center", fontsize=14)

   ax.tick_params(labelleft=False, labelbottom=False)
   ax.set_ylabel(f"ylabel {i}")
   i += 1

 fig.suptitle("Suptitle", fontsize=20)
 fig.supylabel("Supylabel", fontsize=16)
 fig.supxlabel("Supxlabel", fontsize=16)

 plt.tight_layout()
 plt.savefig("fig.png", dpi=200)

这就是绘制最上面图的代码,我们再把图展示一下,这样可以更加直观:

https://avoid.overfit.cn/post/d33dd6fdc9084327919ef5fb290ccc14

作者:Sami Kohvakka

目录
相关文章
|
10天前
|
搜索推荐 数据可视化 Python
Matplotlib图表中的数据标签与图例设置
【4月更文挑战第17天】这篇文章介绍了如何在Python的Matplotlib库中设置数据标签和图例,以增强图表的可读性和解释性。主要内容包括:使用`text`函数添加基本和自定义数据标签,以及自动和手动创建图例。图例的位置和样式可通过`loc`和相关参数调整。文章强调了数据标签和图例结合使用的重要性,提供了一个综合示例来展示实践方法。良好的图表设计旨在清晰有效地传达信息。
|
1月前
|
机器学习/深度学习 数据可视化 搜索推荐
12个最常用的matplotlib图例 !!
12个最常用的matplotlib图例 !!
33 1
|
4月前
|
人工智能 算法 数据可视化
Matplotlib从入门到精通04-文字图例尽眉目
Matplotlib从入门到精通04-文字图例尽眉目
Matplotlib从入门到精通04-文字图例尽眉目
|
8月前
|
Python
Python-matplotlib | 绘制双y轴图形(图例设置)
Python-matplotlib | 绘制双y轴图形(图例设置)
|
Python API
Matplotlib 中文用户指南 3.6 图例指南
图例指南 原文:Legend guide 译者:飞龙 协议:CC BY-NC-SA 4.0 此图例指南是legend()中可用文档的扩展 - 请在继续阅读本指南之前确保你熟悉该文档(见篇尾)的内容。
1042 0
|
索引 Python
python matplotlib绘图时图例显示问题
在使用python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图例解释文字只显示第一个字符,需要在传参时在参数后加一个逗号(应该是python语法,加逗号,才可以把参数理解为元组类型...
1513 0
|
1月前
|
数据可视化 数据挖掘 API
Python数据可视化利器Matplotlib详解
本文将深入探讨Python中常用的数据可视化库Matplotlib,介绍其基本概念、常见绘图函数和实例应用。通过学习Matplotlib,读者可以掌握如何利用Python进行数据可视化,展示数据分析结果。
|
1月前
|
数据可视化 数据挖掘 Python
Python数据可视化:探索Matplotlib的强大功能
数据可视化在如今的数据分析和展示中扮演着至关重要的角色。本文将介绍Python中常用的数据可视化库Matplotlib,深入探讨其功能和应用,帮助读者更好地利用Matplotlib进行数据可视化。
|
1月前
|
数据可视化 数据处理 Python
Python数据可视化库Matplotlib的应用与优势探究
本文将深入探讨Python中强大的数据可视化库Matplotlib的应用与优势。通过介绍Matplotlib的基本概念和常用功能,结合具体案例展示其在数据分析和图表绘制中的灵活性和实用性,帮助读者更好地利用这一工具进行数据可视化。