fig , ax = plt . subplots ( ) ax . plot ( x , y , color = 'green' ) ax . set_ylabel ( 'y' ) ax . set_xlabel ( 'x' ) ax . spines [ 'right' ] . set_visible ( False ) # ax右轴隐藏 z_ax = ax . twinx ( ) # 创建与轴群ax共享x轴的轴群z_ax z_ax . plot ( x , z , color = 'blue' ) z_ax . set_ylabel ( 'z' ) plt . show ( )

请添加图片描述
这里的关键步骤有二(对应带注释的两行):

  1. 隐藏了 ax 轴群的右轴;
  2. 建立了一个与 ax 轴群共享 fig , ax = plt . subplots ( ) ax . plot ( x , y , color = 'green' ) ax . set_ylabel ( 'y' ) ax . set_xlabel ( 'x' ) ax . spines [ 'right' ] . set_visible ( False ) z_ax = ax . twinx ( ) z_ax . plot ( x , z , color = 'blue' ) z_ax . set_ylabel ( 'z' ) k_ax = ax . twinx ( ) # 创建与轴群ax共享x轴的轴群k_ax k_ax . spines [ 'right' ] . set_position ( ( 'data' , 12 ) ) # 确定k_ax轴群右边轴的位置在数值12 k_ax . plot ( x , k , color = 'red' ) k_ax . set_ylabel ( 'k' ) plt . show ( )

    请添加图片描述
    第三个轴群 k_ax 的添加跟之前的 z_ax 相似,只是多了一个确定轴位置的代码

    k_ax.spines['right'].set_position(('data', 12))
    

    通过调节这个数值,能确定轴坐落的位置,这与 ax 轴群的x轴相关,数值比x轴的最大值要大(此处x轴最大值为10,轴位置取了12),具体是多少需要尝试。

    来亿点点美化

    这里 没有用到 类似于

    from mpl_toolkits.axes_grid1 import host_subplot
    

    这种主轴+寄生轴实现多y轴的方法,因为 matplotlib 里对这个方法的支持并不多,甚至连修改线宽难度也不小(可能是我不会……欢迎交流)。我上面提到的方法有很多的参数接口,既然这样,那就发挥这种方法的优势,来做一点点美化吧!

    # -*- coding: utf-8 -*-
    Created on Mon Aug 22 20:01:38 2022
    @author: Lenovo
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import rcParams
    from matplotlib.pylab import mpl
    #默认字体
    config = {
        "font.family":'Times New Roman',
        "font.size": 16,
        "mathtext.fontset":'stix',
        "font.serif": ['Times New Roman'],
    rcParams.update(config)
    mpl.rcParams['font.sans-serif'] = ['SimHei']   #显示中文
    mpl.rcParams['axes.unicode_minus']=False       #显示负号
    pressure = np.array([40, 50, 100, 140, 160, 180, 200, 240])
    Tc = np.array([51.870, 54.062, 48.419, 42.902, 42.290, 41.336, 41.309, 42.725])
    Lambda = np.array([1.849, 1.494, 1.054, 0.935, 0.914, 0.896, 0.893, 0.895])
    Omiga_log = np.array([410.806, 522.407, 741.113, 811.674, 836.477, 850.304, 855.685, 880.548])
    a = 0.45
    fig, ax = plt.subplots(figsize=(13*a,13*a))
    plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.3, hspace=0.3)
    plt.rcParams['ytick.direction'] = 'in'# 刻度线显示在内部
    plt.rcParams['xtick.direction'] = 'in'# 刻度线显示在内部
    bwith = 2
    ax.spines['bottom'].set_linewidth(bwith)
    ax.spines['left'].set_linewidth(bwith)
    ax.spines['top'].set_linewidth(bwith)
    ax.spines['right'].set_linewidth(bwith)
    ax.axhline(y=np.average(Tc[3:]), color='gray', ls='-', )
    ax.plot(pressure, Tc, 'k-o')
    ax.set_ylim(ymin=0, ymax=59)
    ax.set_xlabel('$\mathrm{pressure \; (GPa)}$', fontsize=18)
    ax.set_ylabel('$\mathrm{T_c \; (K)}$', fontsize=18)
    ax.tick_params(length=6, width=2)
    ax.spines['right'].set_visible(False)
    lambda_color = 'blue'
    labmda_ax = ax.twinx()
    labmda_ax.plot(pressure, Lambda, 's--', color=lambda_color)
    labmda_ax.set_ylim(ymin=0.001, )
    labmda_ax.set_xlabel('$\mathrm{pressure \; (GPa)}$', fontsize=18)
    labmda_ax.tick_params(length=6, width=2, color=lambda_color, labelcolor=lambda_color)
    labmda_ax.set_ylabel('$\lambda$', fontsize=18, color=lambda_color)
    labmda_ax.spines['right'].set(color=lambda_color, linewidth=2.0, linestyle=':')
    omglog_color = 'red'
    omglog_ax = ax.twinx()
    omglog_ax.spines['right'].set_position(('data', 300))
    omglog_ax.set_ylim(0, 900)
    omglog_ax.plot(pressure, Omiga_log, 'o-.', color=omglog_color)
    omglog_ax.set_ylabel('$\omega_{log}$', fontsize=18, color=omglog_color)
    omglog_ax.tick_params(length=6, width=2, color=omglog_color, labelcolor=omglog_color)
    omglog_ax.spines['right'].set(color=omglog_color, linewidth=2.0, linestyle='-.')
                                        在一些应用场景中,有时需要绘制两个 x 轴或两个 y 轴,这样可以更直观地显现像,从而获取更有效的数据。Matplotlib 提供的 twinx() 和 twiny() 函数,除了可以实现绘制轴的功能外,还可以使用不同的单位来绘制曲线,比如一个轴绘制对函数,另外一个轴绘制指数函数。下面示例绘制了一个具有两个 y 轴的形,一个显示指数函数 exp(x),另一个显示对数函数 log(x)。
    Matplotlib绘制出的形中会存在一些问题,例如:如何绘制Y轴坐标系?如何去掉形默认的边框?以及如何移动坐标到指定位置?下面我们就来看看如何解决
    1️⃣twinx()函数
    y轴绘制的关键函数:twinx()。
    twinx()函数表示共享x轴,共享表示的就是x轴使用同一刻度线。
    使用这个Axes坐标轴实例去调用twinx()函数,从而实现两个Y轴共享一个X轴的效果。
    使用add_subplot添加了Axes坐标轴实例。
    %matplotlib inline
    import pandas as 
                                        Matplotlib可以创建出版质量的形,制作交互式的形,自定义视觉风格和布局,导出到多种文件格式,嵌入在JupyterLab和形用户界面中。Matplotlib提供了多种形,包括基本的柱状、折线、散点、箱线、散点、饼等,还提供了极坐标、3D形等高级的可视化形(如果不想看官方文档,可以查看。好了,今天的踩坑日记就到这里了,对于的其它修改细节,大家可以自己尝试一下,多试试总能发现不同的坑。,并且也没有出现报错信息,说明两个例都显示出来的,很有可能就是。
                                        Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
                                        简 介: 本文给出了利用Matplotlib中的 twinx()  完成同一个表中绘制具有两个 Y-轴的曲线。绘制每一个曲线的方法与普通的Plot没有什么两样。
    关键词: matplotlibY轴
    #mermaid-svg-SsRJ7ZfWKpMLrQEB .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-sv..
    import pandas as pd
    from matplotlib.lines import Line2D
    import matplotlib.patches as patches
    import pandas as pd
    import seaborn as sns
                                        在某些情况下,我们需要在同一个形中绘制具有不同量级的数据,并且希望它们分别对应于两个不同的Y轴。假设我们有两个数据集,分别是 “dataset1” 和 “dataset2”,它们具有不同的量级。通过以上步骤,我们成功地实现了使用 Matplotlib 绘制Y轴形的效果。希望本文能够帮助你理解如何使用 Matplotlib 绘制Y轴形,并为你的数据可视化工作提供参考。运行上述代码,将会得到一个带有Y轴形,其中左Y轴对应于 “dataset1”,右Y轴对应于 “dataset2”。
                                        在python中作是一个基本的数据可视化的操作,需要初学者要熟练掌握。而在作中需要经常用到的库有numpy、matplotlib,其中对于的操作经常会涉及到形的横纵标签,标题,横纵坐标的表示等。其中调用matplotlib中的plot进行作(这与matlab类似),xlabel、ylabel用于设置形的横纵坐标签,title用于设置形的标题,legend用于设置显示形标签。这里展示用python将y=sinx与y=cosx进行作,并且放在同一个窗口中。