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

2023-12-09 12:36

本文主要是介绍Matplotlib中的titles(标题)、labels(标签)和legends(图例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 pltfig, 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 = 1for 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 pltimport numpy as npfig, axs = plt.subplots(nrows=2, ncols=2, figsize=(10, 7), sharex=True, sharey=True, squeeze=True)i = 1for 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 += 1fig.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

这篇关于Matplotlib中的titles(标题)、labels(标签)和legends(图例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/473755

相关文章

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

matplotlib绘图中插入图片

在使用matplotlib下的pyplot绘图时,有时处于各种原因,需要采用类似贴图的方式,插入外部的图片,例如添加自己的logo,或者其他的图形水印等。 一开始,查找到的资料都是使用imshow,但是这会有带来几个问题,一个是图形的原点发生了变化,另外一个问题就是图形比例也产生了变化,当然最大的问题是图形占据了整个绘图区域,完全喧宾夺主了,与我们设想的只在绘图区域中占据很小的一块不相符。 经

Spring下自定义xml标签

dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子。 一 编写模型类 1 package com.hulk.testdubbo.model;2 3 public class Hero {4 private String name;5 private int