python画图| 对齐图名和标签

server/2024/10/22 11:50:50/

【1】引言

学习了很多python画图教程之后,我们会发现:一些最基本的设置往往对图形的表达具有至关重要的影响。

因此,我们暂时回过头来,对一些基础知识进行加强。

今天,就一起学习如何对齐图名和标签。

【2】官网教程

点击下方链接,直达官网教程:

Aligning Labels and Titles — Matplotlib 3.9.2 documentation

官网教程给了一个两行两列的图形输出,对标签值进行了倾斜设置,相对于已经学过的教程显得别具一格,为此我进行了代码注释。

【3】代码解读

首先是引入画图和计算模块:

import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块

然后定义要画两行两列的图形:

fig, axs = plt.subplots(2, 2, layout='constrained') #定义要画图

在此基础上先输出第一行第一列的图形:

ax = axs[0][0] #定义第一行第一列的子图
ax.plot(np.arange(0, 1e6, 1000)) #输出第一行第一列的子图
ax.set_title('Title0 0') #设置图名
ax.set_ylabel('YLabel0 0') #设置Y轴

然后输出第一行第二列的图形:

ax = axs[0][1] #定义第一行第二列的子图
ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1)) #输出第一行第二列的子图
ax.set_title('Title0 1') #设置图名
ax.xaxis.tick_top() #在子图的上侧显示标签
ax.tick_params(axis='x', rotation=55) #标注标签值,倾斜55度

在第一行第二列图像的输出设置中,有一个“rotation=55”,这段代码把输出值倾斜了55度。

在输出第二行的图形时,使用了for循环:

for i in range(2): #输出第二行图形ax = axs[1][i] #逐个输出图形ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1)) #设置自变量和因变量ax.set_ylabel('YLabel1 %d' % i) #设置Y轴标签ax.set_xlabel('XLabel1 %d' % i) #设置X轴标签if i == 0:ax.tick_params(axis='x', rotation=55) #对左侧轴标签的输出倾斜55度

第二行的每个子图轴标签都倾斜了55度。

因为标签倾斜,所有会影响图名的位置,接下来使用fig.align()函数要求图名和标签对齐

fig.align_titles() #对齐图名
fig.align_labels()  # 'same as fig.align_xlabels(); fig.align_ylabels()'对齐标签plt.show() #输出图形

获得输出图形为:

图1

完整的带注释代码为:

python">import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块fig, axs = plt.subplots(2, 2, layout='constrained') #定义要画图ax = axs[0][0] #定义第一行第一列的子图
ax.plot(np.arange(0, 1e6, 1000)) #输出第一行第一列的子图
ax.set_title('Title0 0') #设置图名
ax.set_ylabel('YLabel0 0') #设置Y轴ax = axs[0][1] #定义第一行第二列的子图
ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1)) #输出第一行第二列的子图
ax.set_title('Title0 1') #设置图名
ax.xaxis.tick_top() #在子图的上侧显示标签
ax.tick_params(axis='x', rotation=55) #标注标签值,倾斜55度for i in range(2): #输出第二行图形ax = axs[1][i] #逐个输出图形ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1)) #设置自变量和因变量ax.set_ylabel('YLabel1 %d' % i) #设置Y轴标签ax.set_xlabel('XLabel1 %d' % i) #设置X轴标签if i == 0:ax.tick_params(axis='x', rotation=55) #对左侧轴标签的输出倾斜55度fig.align_labels()  # 'same as fig.align_xlabels(); fig.align_ylabels()'对齐标签
fig.align_titles() #对齐图名plt.show() #输出图形

【4】代码修改

为扩大倾斜程度,删除下述代码:

if i == 0:

此时第二行的子图轴标签倾斜程度也跟随修改,使它们有不同的倾斜角度:

ax.tick_params(axis='x', rotation=30*(i+1)) #对左侧轴标签的输出倾斜55度

 此时的输出图形为:

图2

至此的完整代码为:

python">import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块fig, axs = plt.subplots(2, 2, layout='constrained') #定义要画图ax = axs[0][0] #定义第一行第一列的子图
ax.plot(np.arange(0, 1e6, 1000)) #输出第一行第一列的子图
ax.set_title('Title0 0') #设置图名
ax.set_ylabel('YLabel0 0') #设置Y轴ax = axs[0][1] #定义第一行第二列的子图
ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1)) #输出第一行第二列的子图
ax.set_title('Title0 1') #设置图名
ax.xaxis.tick_top() #在子图的上侧显示标签
ax.tick_params(axis='x', rotation=55) #标注标签值,倾斜55度for i in range(2): #输出第二行图形ax = axs[1][i] #逐个输出图形ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1)) #设置自变量和因变量ax.set_ylabel('YLabel1 %d' % i) #设置Y轴标签ax.set_xlabel('XLabel1 %d' % i) #设置X轴标签ax.tick_params(axis='x', rotation=30*(i+1)) #设置轴标签的输出倾斜度fig.align_labels()  # 'same as fig.align_xlabels(); fig.align_ylabels()'对齐标签
fig.align_titles() #对齐图名plt.show() #输出图形

【5】代码完善

为突出对比,给图形设置不同的颜色和线型:

图3

此时的完成代码为:

python">import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块fig, axs = plt.subplots(2, 2, layout='constrained') #定义要画图ax = axs[0][0] #定义第一行第一列的子图
ax.plot(np.arange(0, 1e6, 1000),'--',color='y')#输出第一行第一列的子图
ax.set_title('Title0 0') #设置图名
ax.set_ylabel('YLabel0 0') #设置Y轴ax = axs[0][1] #定义第一行第二列的子图
ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1),'o--') #输出第一行第二列的子图
ax.set_title('Title0 1') #设置图名
ax.xaxis.tick_top() #在子图的上侧显示标签
ax.tick_params(axis='x', rotation=55) #标注标签值,倾斜55度for i in range(2): #输出第二行图形ax = axs[1][i] #逐个输出图形ax.plot(np.arange(1., 0., -0.1) * 2000., np.arange(1., 0., -0.1),color=(i,i*2/10,i*3/10)) #设置自变量和因变量ax.set_ylabel('YLabel1 %d' % i) #设置Y轴标签ax.set_xlabel('XLabel1 %d' % i) #设置X轴标签ax.tick_params(axis='x', rotation=30*(i+1)) #设置轴标签的输出倾斜度fig.align_labels()  # 'same as fig.align_xlabels(); fig.align_ylabels()'对齐标签
fig.align_titles() #对齐图名plt.show() #输出图形

【6】总结

fig.align_titles() 可以对齐图名;

fig.align_labels() 可以对齐标签;

ax.tick_params(axis='x', rotation=??) 可以设置X轴的倾斜度。


http://www.ppmy.cn/server/133890.html

相关文章

解锁Claude五大能力,带你使用更加强大的Claude

很多人都听说过这样一句话:"想要AI生成更好的答案,你必须提供清晰、有效的提示。" 这句话现在可谓是家喻户晓。 然而,即便知道这个道理,很多人仍然不知道该如何写出好的提示词。他们常常面对空白的输入框,…

大厂面试真题-说一下推和拉的模式以及常见的使用

Pull(拉)模式和Push(推)模式是消息传递中的两种基本机制,它们在消息中间件和注册中心中的应用广泛而多样。 Pull(拉)模式 Pull模式是一种消息消费模式,其中客户端主动从服务端拉取…

使用Verilog设计分频模块(2Hz)

在数字电路设计中,分频器是一种常见的电路,用于将一个高频的时钟信号分频到一个较低频率的时钟信号。本次将通过一个实际的例子,讲解如何使用Verilog语言设计一个分频器,将系统时钟信号分频到2Hz。 在数字电路系统的设计中&#x…

openresty安装

openresty官网:http://openresty.org/cn/ openresty官方安装文档:http://openresty.org/cn/installation.html github地址:https://github.com/openresty 安装前准备,必须安装perl、libpcre、libssl库。 可以用如下命令查看安装情…

用大模型或者向量模型比如huggingface上的模型,处理一批图片,对该图片进行分类,检索

要使用大模型或向量模型对图片进行分类和检索,通常可以采用以下几种方法: 1. **图像分类**:使用预训练的图像分类模型(如ResNet、EfficientNet等)对图片进行分类。 2. **图像特征提取**:使用预训练的模型(如CLIP、ResNet等)提取图像的特征向量,然后进行相似度检索。 …

Android Framework关闭触摸振动

文章目录 手势上滑时振动代码performHapticFeedback作用和意义 触摸振动开关设置Framework关闭触摸时振动 手势上滑时振动代码 安卓手机由底部往上滑时,会有震动,然后进入Recents多任务,其触发震动调用的代码 packages/apps/Launcher3/quick…

lstm和informer和gru模型对比

1 介绍 本文使用数据集,对三个模型进行了对比,代码使用python完成,通过对比,发现lstm>gru>informer. 2 数据读取 使用降水量数据集,第一列表示降水,第二列表示出水量。 输入是两个特征输出是一个…

RabbitMQ系列学习笔记(八)--发布订阅模式

文章目录 一、发布订阅模式原理二、发布订阅模式实战1、消费者代码2、生产者代码3、查看运行结果 本文参考: 尚硅谷RabbitMQ教程丨快速掌握MQ消息中间件rabbitmq RabbitMQ 详解 Centos7环境安装Erlang、RabbitMQ详细过程(配图) 一、发布订阅模式原理 在开发过程中&…