Matplotlib中的非线性第二轴

5
我想知道在Matplotlib中是否有一种方法可以添加第二个非线性x轴,如果没有任何分析公式。或者简化一下,是否有一种方法可以为原始x轴中的每个数字创建独特的标签。以下图表说明了我正在寻找的内容。不幸的是,以前曾提出过类似的question问题,但未得到答复。

enter image description here


2
这个回答解决了你的问题吗?修改刻度标签文本 - Julien
我认为可能有解决方案,所以根据您提供的链接,我认为我可以将第二个轴用作“刻度”,然后通过将时间值转换为字符串来添加时间值。我会尝试一下。我正在寻找像图中显示的两个x轴,其中第二个是非线性的或仅带有值的标签。 - gfdsal
2
如果您没有解析公式,还有什么可以定义两个轴之间的关系呢?(请注意,另一个问题没有得到回答,因为它同样不清楚,并非没有解决方案。) - ImportanceOfBeingErnest
2
请参考以下链接:https://dev59.com/JGkv5IYBdhLWcg3wjxhl - Julien
2
次要轴演示有使用interp的示例。https://matplotlib.org/3.1.0/gallery/subplots_axes_and_figures/secondary_axis.html - Jody Klymak
显示剩余3条评论
1个回答

6

由于问题明确要求两个轴之间存在任意关系(或者拒绝澄清),这里提供一个绘制任意关系的代码。

import matplotlib.pyplot as plt
import numpy as np

a, b = (2*np.random.rand(2)-1)*np.random.randint(1,500, size=2)
time = lambda T: a*T+b
Temp = lambda t: (t-b)/a

T = np.linspace(0, 100, 301)
y = T**2

fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.25)

ax.set_xlabel("Temperature")
ax.plot(T,y)

ax2 = ax.secondary_xaxis(-0.2, functions=(time, Temp))
ax2.set_xlabel("Time")

plt.show()

输出可能会像这样,但可能会有所不同,因为关系是任意的,并且取决于所选的随机数字。

enter image description here


我在评论中澄清了我所说的“任意”。 - gfdsal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接