如何在Matplotlib中对齐双X轴(twiny)使对应数据点重合?
双X轴非线性对齐问题及解决思路
我编写代码绘制两条曲线,希望展示同一y值对应的两个x值(x值间存在非线性关系)。由于描述y的函数可表示为任意一个x的函数,因此需要呈现这两种依赖关系。但当前绘图中的双X轴并未对齐,仅首尾数据点重合,红色点无法对应到蓝色/橙色点的正上方。
import numpy as np import matplotlib.pyplot as plt # Energies in keV # EPKA, Tdam, eff FeValues = np.array([ [80, 69, 42], [90, 78, 42], [100, 86, 42] ]) WValues = np.array([ [150, 133, 30], [200, 177, 29], [250, 220, 29] ]) fig = plt.figure() axPKA = fig.add_subplot() axPKA.set_xlabel(r"$E_{PKA}$ (keV)") axPKA.set_ylabel(r"$\overline{\xi}$ (%)") axTdam = axPKA.twiny() axTdam.set_xlabel(r"$T_{dam}$ (keV)") axPKA.plot(FeValues[:, 0], FeValues[:, 2], label="Fe", marker="o") axPKA.plot(WValues[:, 0], WValues[:, 2], label="W", marker="o") axTdam.scatter(FeValues[:, 1], FeValues[:, 2], marker=".", color="red") axTdam.scatter(WValues[:, 1], WValues[:, 2], marker=".", color="red") axPKA.legend() fig.tight_layout() plt.show()
经分析,EPKA与Tdam为非线性关系,且Fe和W的该关系存在差异,常规双X轴对齐方案无法解决此问题。最终决定改用另一图表单独展示EPKA-Tdam的对应关系。
内容的提问来源于stack exchange,提问作者Abel Gutiérrez
相关产品推荐
相关产品推荐

