matplotlib画图【双坐标轴】

该文介绍了如何使用Python的matplotlib库创建具有双坐标轴的图表,并详细说明了如何调整图例的位置,使其位于图表外部,以及如何合并两个坐标轴的图例。示例代码中涉及设置全局字体、定义颜色映射、绘制曲线并定制图例布局。

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

一、导入相关包、设置全局字体

import matplotlib.pyplot as plt
# 设置全局字体
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman'] + plt.rcParams['font.serif']

二、创建双坐标轴,合并图例,将图例放在图外

plt.figure()
fig, ax1 = plt.subplots()

# 不同曲线使用不同颜色
cmap=[plt.cm.Paired(i+1) for i in range(10)]

line1 = ax1.plot(x, y, color=cmap[1], label=k)
ax1.set_xlabel('Epoch')
# plt.xticks(rotation=45)
ax1.set_ylabel('left label')

ax2 = ax1.twinx()
line2 = ax2.plot(x, y, color=cmap[2], label=k)
ax2.set_ylabel('right label')

# 合并图例
lines = line1 + line2
labels = [l.get_label() for l in lines]

# 将图例放在图的下面
ax1.legend(lines, labels, bbox_to_anchor=(0.5, -0.25), loc=8, ncol=4)

fig.subplots_adjust(left=0.15, right=0.85, top=0.9, bottom=0.2)
plt.title('Loss and Dice Result')
plt.savefig(save_path)

参考链接:

  1. 修改图例显示位置:https://blog.youkuaiyun.com/Caiqiudan/article/details/107747381

  1. 修改图例位置后被隐藏/显示不全:https://blog.youkuaiyun.com/Poul_henry/article/details/88311964

### 设置 Matplotlib 坐标轴字体样式和大小 在 Matplotlib 中可以通过多种方式来设置坐标轴的字体样式和大小。一种常见的方式是在创建图形对象时通过 `rcParams` 来全局设定,另一种则是针对单个图表中的特定元素进行局部调整。 对于全局配置而言,可以修改 matplotlib 的 rc 参数以影响所有后续绘制的图像: ```python import matplotlib.pyplot as plt plt.rcParams['font.family'] = 'serif' plt.rcParams['font.serif'] = ['Times New Roman'] plt.rcParams['axes.labelsize'] = 14 plt.rcParams['xtick.labelsize'] = 12 plt.rcParams['ytick.labelsize'] = 12 ``` 如果希望仅对某个具体的图表应用这些更改,则可以在该图表内部指定相应的属性[^1]: ```python fig, ax = plt.subplots() ax.set_xlabel('X Axis Label', fontsize=18) ax.set_ylabel('Y Axis Label', fontsize=16) for label in (ax.get_xticklabels() + ax.get_yticklabels()): label.set_fontname('Arial') label.set_fontsize(10) ``` 当涉及到更复杂的格式化需求比如上下标的时候,可以直接利用 LaTeX 风格字符串表达式来进行标注[^2]: ```python from matplotlib import font_manager # 定义字体字典 font = {'family': 'normal', 'weight': 'bold', 'size': 10} ax.set_ylabel(r'$\mathrm{ab}^{cd}$', fontdict=font) # 上标 ax.set_xlabel(r'$\mathrm{ab}_{cd}$', fontdict=font) # 下标 ``` 上述代码展示了如何灵活运用不同方法来自定义 Matplotlib 图表中坐标轴的文字显示效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值