如何将Matplotlib图例设置为左右分组并排的指定样式?
实现图例左右分组并排的解决方案
要实现左侧显示t系列标签、右侧显示a系列标签的分组图例,可以通过创建两个独立图例并分别定位的方式实现,具体修改步骤如下:
修改后的代码
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0,1, 100) y = np.sin(x) # 分别存储两组线条对象 t_lines = [] a_lines = [] for i in range(1,6): # 绘制t系列曲线,保存线条实例 line_t, = plt.plot(x, i*y, label=f't= {i}') t_lines.append(line_t) # 绘制a系列散点,保存线条实例 line_a, = plt.plot(x[::2], i*y[::2], marker='o', linestyle='None', markersize=2, label=f'a= {i}') a_lines.append(line_a) # 创建左侧的t系列图例 leg1 = plt.legend(handles=t_lines, loc='upper left', bbox_to_anchor=(0, 1)) # 将第一个图例添加到当前坐标轴(避免被第二个图例覆盖) plt.gca().add_artist(leg1) # 创建右侧的a系列图例 plt.legend(handles=a_lines, loc='upper right', bbox_to_anchor=(1, 1)) plt.show()
关键说明
- 用
t_lines和a_lines两个列表分别存储两类图形的线条对象,确保能精准分组调用。 - 第一个图例通过
handles指定t_lines,用loc='upper left'和bbox_to_anchor=(0,1)固定在左上角;调用add_artist是为了保留这个图例,避免被后续创建的图例覆盖。 - 第二个图例指定
a_lines,用loc='upper right'和bbox_to_anchor=(1,1)固定在右上角,最终实现左右分组并排的效果。
内容的提问来源于stack exchange,提问作者user18893035
相关产品推荐
相关产品推荐

