双Y轴,两边用各自的刻度,话不多说,直接上代码,亲测运行无bug,代码后上图。
import code
import numpy as np
import time
from math import sqrt
import os
import random
#画图导入的包
import matplotlib.pyplot as plt
import matplotlib as mpl
from mpl_toolkits.basemap import Basemap
from matplotlib.colors import LogNorm
# 使用LinearSegmentedColormap定义颜色映射
import matplotlib.colors as mcolors
import matplotlib.ticker as ticker
if __name__ == "__main__":
#=====Figure 1 所需要的数据
DataFig1_1 = [2.24, 2.96, 3.26, 3.48, 3.5, 3.67, 3.82, 3.83, 3.86, 3.73]
DataFig1_2 = [2.16, 2.71, 3.05, 3.19, 3.26, 3.32, 3.30, 3.32, 3.33, 3.263]
DataFig1_3 = [2.20, 2.33, 2.46, 2.68, 2.81, 2.96, 3.07, 3.236, 3.372, 3.514]
#=====Figure 2 所需要的数据
DataFig2_1 = [0.88404847, 0.87900295, 0.8601907, 0.8556931, 0.86239277, 0.86448826, 0.86507957, 0.8678406, 0.85524754, 0.85193065]
DataFig2_2 = [0.55725404, 0.56019696, 0.5694529, 0.57943706, 0.57959283, 0.54769655, 0.56250471, 0.58543746, 0.57951047, 0.528167]
# ====画双Y轴图
fsize = 20
mpl.rcParams['font.weight'] = 'bold'
mpl.rcParams['font.size'] = fsize
mpl.rcParams['font.sans-serif'] = ['Times New Roman']
fig, ax1 = plt.subplots(figsize=(15, 13))
# 绘制第一个y轴的曲线
color = 'tab:red'
ax1.set_xlabel('Lead time / day', fontsize = fsize, fontweight='bold')
ax1.set_ylabel('RMSE / ℃', color = color, fontsize=fsize, fontweight='bold')
ax1.plot(np.arange(1, (len(DataFig1_1) + 1)), DataFig1_1, 'b', label='AAA', linewidth=3)
ax1.plot(np.arange(1, (len(DataFig1_2) + 1)), DataFig1_2, 'k', label='BBB', linewidth=3)
ax1.plot(np.arange(1, (len(DataFig1_3) + 1)), DataFig1_3, 'r', label='CCC', linewidth=3)
ax1.legend(fontsize=fsize, loc='lower left', frameon=False)
ax1.set_xlim(1, len(DataFig1_1))
ax1.set_xticks(np.arange(1, len(DataFig1_1) + 1))
ax1.set_xticklabels(np.arange(1, len(DataFig1_1) + 1), fontsize=fsize, fontweight='bold')
ax1.set_ylim(1, 4.5)
ax1.tick_params(axis='y', labelcolor=color)
# 创建第二个y轴并绘制曲线
ax2 = ax1.twinx()
color = 'tab:blue'
ax2.set_ylabel('Correlation', color=color, fontsize=fsize, fontweight='bold')
ax2.plot(np.arange(1, (len(DataFig2_1) + 1)), DataFig2_1, 'k', linestyle = '--', label='BBB',
linewidth=3)
ax2.plot(np.arange(1, (len(DataFig2_2) + 1)), DataFig2_2, 'r', linestyle = '--', label='CCC', linewidth=3)
ax2.legend(fontsize=fsize, loc='lower right', frameon=False)
# 调整legend的位置
ax2.set_ylim(0, 1)
ax2.tick_params(axis='y', labelcolor=color)
ax = plt.gca()
ax.spines['bottom'].set_linewidth(2); ###设置底部坐标轴的粗细
ax.spines['left'].set_linewidth(2); ####设置左边坐标轴的粗细
ax.spines['right'].set_linewidth(2); ###设置右边坐标轴的粗细
ax.spines['top'].set_linewidth(2); ###设置右边坐标轴的粗细
plt.savefig('./Figure.png', bbox_inches='tight', dpi=600)
结果: