如何使用 matplotlib 以指数方式缩放 Y 轴

新手上路,请多包涵

我正在尝试创建一个带有指数(?)Y 轴的 matplotlib 图,就像我在下面模拟的假图一样。对于我的数据,我想在值接近最大 Y 值时将它们展开。我想在 Y 接近于零时压缩这些值。

所有普通的“日志”示例都做相反的事情:它们在远离零时压缩值。这当然是“日志”的作用。我怎样才能创建指数(?)缩放比例呢?

图形

原文由 Philip 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 761
1 个回答

从 matplotlib 3.1 开始,您可以通过以下方式轻松定义任何自定义比例

ax.set_yscale('function', functions=(forward, inverse))

另见 https://matplotlib.org/3.1.1/gallery/scales/scales.html

在这种情况下,例如:

 from functools import partial

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1, 40, 100)
y = np.linspace(1, 4, 100)

fig, ax = plt.subplots()
ax.plot(x, y)

# Set y scale to exponential
ax.set_yscale('function', functions=(partial(np.power, 10.0), np.log10))
ax.set(xlim=(1,40), ylim=(1,4))
ax.set_yticks([1, 3, 3.5, 3.75, 4.0])

plt.show()

在此处输入图像描述

原文由 ImportanceOfBeingErnest 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题