【Python绘图】多个子图使用一个图例

本文介绍如何在Matplotlib中实现多个子图共享一个图例的方法,这对于需要展示多组数据但又希望保持图表简洁的情况非常有用。文中通过具体实例展示了不同场景下共享图例的设置技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### 如何在Python Matplotlib中创建包含图例的单个子 为了实现这一目标,可以按照如下方式操作: #### 导入必要的库并准备数据 首先,导入所需的`numpy`用于生成测试数据,以及`pyplot`模块来绘制表。 ```python import numpy as np from matplotlib import pyplot as plt ``` 接着定义一些示例性的数据集以便于后续作使用。这里采用正弦函数和余弦函数作为两个不同的系列来进行展示[^2]。 ```python x = np.linspace(0, 10, 100) # 定义横坐标范围 y1 = np.sin(x) # 正弦波形的数据序列 y2 = np.cos(x) # 余弦波形的数据序列 ``` #### 创建形对象与轴域 通过调用`plt.subplots()`方法初始化一个新的Figure实例及其对应的Axes对象,这允许更灵活地控制布局和其他属性。 ```python fig, ax = plt.subplots() ``` #### 绘制折线并添加标签 利用上述获得的对象,在指定区域内分别画出两条不同颜色的线条,并分别为其赋予描述性的标签名,这些名称稍后会显示在图例里。 ```python ax.plot(x, y1, label='Sine Wave', color='blue') ax.plot(x, y2, label='Cosine Wave', color='red') ``` #### 配置表细节 除了基本的绘图之外,还可以进一步定制化表外观,比如设定标题、坐标轴的名字等。 ```python ax.set_title('Single Subplot with Legends') # 设置整个表的大标题 ax.set_xlabel('Time (s)') # X 轴的文字说明 ax.set_ylabel('Amplitude') # Y 轴的文字说明 ``` #### 处理图例外观及位置调整 最后一步是处理好图例本身的相关事宜,包括但不限于定位到最佳位置或是移至外部空间以优化视觉效果。 对于希望把图例放置在外边框以外的情形,则可以通过修改参数`bbox_to_anchor=(x,y)`中的具体数值来达到目的;而当存在个相同项时可通过过滤掉已经存在的键值对避免重复出现。 ```python handles, labels = ax.get_legend_handles_labels() # 获取当前所有的句柄(handle) 和 标签(label) unique = [(h, l) for i, (h, l) in enumerate(zip(handles, labels)) if l not in labels[:i]] # 去重 ax.legend(*zip(*unique), bbox_to_anchor=(1.05, 1), loc='upper left') # 将去重后的图例置于左侧顶部附近区域外 ``` #### 展现最终成果 执行下面语句即可查看所构建好的带有一个独立且附带适当图例的整体视。 ```python plt.tight_layout(rect=[0, 0, 0.85, 1]) # 自动调整各元素间距防止溢出边界 plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值