当前位置:首页 > 科技  > 软件

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

来源: 责编: 时间:2023-12-12 17:02:51 378观看
导读Matplotlib是一个Python中常用的绘图库,用于创建各种类型的图表。在Matplotlib中,你可以使用titles(标题)、labels(标签)和legends(图例)来增强你的图表。本文讨论Python的Matplotlib绘图库中可用的不同标记选项。Figure, sub

Matplotlib是一个Python中常用的绘图库,用于创建各种类型的图表。在Matplotlib中,你可以使用titles(标题)、labels(标签)和legends(图例)来增强你的图表。本文讨论Python的Matplotlib绘图库中可用的不同标记选项。zXA28资讯网——每日最新资讯28at.com

zXA28资讯网——每日最新资讯28at.com

Figure, subplots 和axes列表

在Matplotlib中,Figure是整个图形窗口,它可以包含一个或多个子图(Axes)。Axes是实际绘图区域,而Figure则是包含所有Axes、标题、标签等元素的容器。zXA28资讯网——每日最新资讯28at.com

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

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轴放在一个子图中,也就是我们上面说的一个组合。zXA28资讯网——每日最新资讯28at.com

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参数可以将唯一的标题与子图的左边缘或右边缘对齐,也可以向子图添加其他标题。有时将主标题左对齐并添加更多信息(如数据源)可能会很有用,或者使用不同的字体或较小的字体右对齐。zXA28资讯网——每日最新资讯28at.com

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

在Matplotlib中,set_title和set_ylabel等函数可以将字体、字体大小和字体粗细作为参数或作为一个名为fontdict的字典。zXA28资讯网——每日最新资讯28at.com

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

图的Title 和label

图标题在Matplotlib中称为suptitle。默认情况下,它是一个标题,在最上面的子标题中间对齐,字体大小比普通的子标题大。zXA28资讯网——每日最新资讯28at.com

与轴标签类似,y轴和x轴也有替代标签。默认情况下,Supylabel以居中对齐的方式出现在图的左侧,而supxlabel以居中对齐的方式出现在图的底部。zXA28资讯网——每日最新资讯28at.com

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

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

子的图例legends

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

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", fnotallow=8)

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

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", fnotallow=8)

总结

通过上面的介绍,我们应该对这几个术语有了一定了解,那么我们来看看下面的代码zXA28资讯网——每日最新资讯28at.com

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", fnotallow=8)  ax.set_xlim(0, 1)  ax.set_ylim(0, 1)  ax.set_title(f"Title {i} left", loc="left", fnotallow=8)  ax.set_title(f"Title {i} right", loc="right", fnotallow=10)  ax.set_title(f"Title {i} center", loc="center", fnotallow=14)   ax.tick_params(labelleft=False, labelbottom=False)  ax.set_ylabel(f"ylabel {i}")  i += 1  fig.suptitle("Suptitle", fnotallow=20) fig.supylabel("Supylabel", fnotallow=16) fig.supxlabel("Supxlabel", fnotallow=16)  plt.tight_layout() plt.savefig("fig.png", dpi=200)

这就是绘制最上面图的代码,我们再把图展示一下,这样可以更加直观:zXA28资讯网——每日最新资讯28at.com

zXA28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-43329-0.htmlMatplotlib中的titles(标题)、labels(标签)和legends(图例)

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 聊一聊雪花算法与分布式ID生成

下一篇: Java中不建议使用foreach的六大场景

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    作者:无锈钵来源:财经无忌7月16日晚,上海1862时尚艺术中心。伴随着幻象的精准命中,硕大的荧幕之上,比分被定格在了14:12,被寄予厚望的EDG战队以绝对的优势战胜了BLG战队,拿下了总决
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
  • Android 14发布:首批适配机型公布

    5月11日消息,谷歌在今天凌晨举行了I/O大会,本次发布会谷歌带来了自家的AI语言模型PaLM 2、谷歌Pixel Fold折叠屏、谷歌Pixel 7a手机,同时发布了Androi
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top