Python实战之画论文级别的双Y轴折线图

双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)

结果: 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值