【问题标题】:Non-linear Second Axis in MatplotlibMatplotlib 中的非线性第二轴
【发布时间】:2020-04-08 11:27:31
【问题描述】:

如果没有任何分析公式,我想知道是否有办法在 Matplotlib 中添加第二个非线性 x 轴。或者,如果有一种方法可以为原始 x 轴中的每个数字创建不同的标签,或者进行简化。下图解释了我在寻找什么。不幸的是,之前有人问过类似的question,但没有得到答复。

【问题讨论】:

  • 这能回答你的问题吗? Modify tick label text
  • 我认为那里可能有解决方案,所以按照你的链接,我想我可以使用第二个轴作为'tick',然后通过将它们转换为字符串来添加时间值。我会试试的。我正在寻找如图所示的两个 x 轴,第二个是非线性的或只是一个带有值的标签。
  • 如果您没有分析公式,您还有什么可以定义两个轴之间的关系? (请注意,另一个问题没有得到解答,因为它同样不清楚,而不是因为没有解决方案。)
  • 次轴演示有一个使用interp的例子。 matplotlib.org/3.1.0/gallery/subplots_axes_and_figures/…

标签: python matplotlib plot axis-labels


【解决方案1】:

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

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

输出可能看起来像这样,但可能会有所不同,因为这种关系是任意的,并且会根据所采用的随机数而发生变化。

【讨论】:

  • 我确实澄清了我在 cmets 中的任意含义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多