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

相关文章

【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

matplotlib中文乱码问题

在使用Matplotlib进行数据可视化的过程中,经常会遇到中文乱码的问题。显示乱码是由于编码问题导致的,而matplotlib 默认使用ASCII 编码,但是当使用pyplot时,是支持unicode编码的,只是默认字体是英文字体,导致中文无法正常显示,所以显示中文乱码。 文本使用系统默认字体、手动指定字体、使用字体管理器来解决。 一、系统默认字体(全局设置字体) 在Matplotlib中

Struts2常用标签总结--转载

Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于

Matplotlib图像读取和输出及jpg、png格式对比,及透明通道alpha设置

图像像素值 图像像素值一般size为3,也就是通道数,分别代表R,G,B,如果只有单一 一个值则表示灰度值,也就是说一张二维图片,当长和宽都为1080时,那么若是灰度图像,图像尺寸为(1080,1080,1)若是RGB图像则为(1080,1080,3), jpg、png图像格式 jpg图像的灰度值范围和RGB范围为[0,255],数值类型为uint8,也就是无符号整数 png图像的灰度值范

使用matplotlib绘制散点图、柱状图和饼状图-学习篇

一、散点图 Python代码如下: num_points = 100x = np.random.rand(num_points) #x点位随机y = np.random.rand(num_points) #y点位随机colors = np.random.rand(num_points) #颜色随机sizes = 1000 * np.random.rand(num_points) # 大

LLM应用实战: 产业治理多标签分类

数据介绍 标签体系 产业治理方面的标签体系共计200+个,每个标签共有4个层级,且第3、4层级有标签含义的概括信息。 原始数据 企业官网介绍数据,包括基本介绍、主要产品等 企业专利数据,包括专利名称和专利摘要信息,且专利的数据量大。 LLM选型 经调研,采用Qwen2-72B-Instruct-GPTQ-Int4量化版本,占用显存更少,且效果与非量化相当,