如何用matplotlib画双y轴折线图


def dual_y_plot(title, X1, Y1, X2, Y2):
    '''
    
    :param title: tile , string
    :param X1: axis x1, list
    :param Y1: axis y1, list
    :param X2: axis x2, list
    :param Y2: axis y2, list
    :return: save the fig to 'title.png'
    '''
    fig, ax1 = plt.subplots(figsize=(12, 9))
    plt.title(title, fontsize=20)
    plt.grid(axis='y', color='grey', linestyle='--', lw=0.5, alpha=0.5)
    plt.tick_params(axis='both', labelsize=14)
    plot1 = ax1.plot(X1, Y1, 'b', label='Test Acc')
    ax1.set_ylabel('Test Acc', fontsize=18)
    ax1.set_ylim(0, 100)
    for tl in ax1.get_yticklabels():
        tl.set_color('b')
    ax2 = ax1.twinx()
    plot2 = ax2.plot(X2, Y2, 'g', label='Train Loss')
    ax2.set_ylabel('Train Loss', fontsize=18)
    ax2.set_ylim(0, 0.5)
    ax2.tick_params(axis='y', labelsize=14)
    for tl in ax2.get_yticklabels():
        tl.set_color('g')
    #ax2.set_xlim(1966, 2014.15)
    lines = plot1 + plot2
    ax1.legend(lines, [l.get_label() for l in lines])
    ax1.set_yticks(np.linspace(ax1.get_ybound()[0], ax1.get_ybound()[1], 9))
    ax2.set_yticks(np.linspace(ax2.get_ybound()[0], ax2.get_ybound()[1], 9))
    for ax in [ax1, ax2]:
        ax.spines['top'].set_visible(False)
        ax.spines['bottom'].set_visible(False)
        ax.spines['right'].set_visible(False)
        ax.spines['left'].set_visible(False)
    fig.text(0.1, 0.02,
             'The original content: http://savvastjortjoglou.com/nba-draft-part02-visualizing.html\nPorter: MingYan',
             fontsize=10)
    plt.savefig(title + ".png")

画出来这样子:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值