首页 > 解决方案 > matplotlib.pyplot 如何确定 x 和 y 轴标签和比例图?

问题描述

我无法理解 matplotlib.pyplot 如何确定放置在 x 和 y 轴上的 x 和 y 标签(默认),以及如何更改这些标签的间隔并相应地缩放绘图。最后一点很重要,因为我遇到了一些非常奇怪的行为。特别是,默认图表如下:

在此处输入图像描述

可以肯定的是,这张图正确地绘制了数据。但是,我不希望 y 轴既没有那么多标签,也没有那么精确。所以我在我的程序中添加了以下代码:

ax.set_ylim(bottom=y_min, top=y_max)
y_tick_marks = list(np.arange(y_min, y_max, (y_max - y_min)/10))
y_labels = [round(elem, 4) for elem in y_tick_marks]
plt.yticks(y_tick_marks, y_labels)

我得到以下图表: 在此处输入图像描述

这看起来很荒谬,因为我应该能够看到这两个图表中的一些(我意识到最大的 y 值与上一个图表不同)。所以我然后删除了前面的代码块并包含以下内容(注意它们是相同的,只是省略了一行):

y_tick_marks = list(np.arange(y_min, y_max, (y_max - y_min)/10))
y_labels = [round(elem, 4) for elem in y_tick_marks]
plt.yticks(y_tick_marks, y_labels)

我这样做是因为考虑到上面的图 1 和图 2 之间的差异,我怀疑该图的缩放发生了一些事情。我认为我是正确的,因为我收到了以下图表:

在此处输入图像描述

这很奇怪,因为第一张图暗示第二张图的 y 值会拟合,但在第三张图中,我们看到第二张图只是很小的一部分。所以我运行了一个打印语句:

print(ax.get_ylim())

这给出了以下输出:

(-1.1500000000000001, 24.15)

世界上到底发生了什么?似乎 matplotlib 承认以某种方式缩放 y 值,但确保通过 y 轴标签将这些缩放的 y 值与其原始值相关联。

我意识到我没有包含太多代码,但是如果没有必要回答问题,我不想强​​迫任何人阅读一堆代码——可以肯定的是,我已经打印了所有 y 值并三重检查了我的输入到绘图方法中。如果需要,我可以添加更多代码,但图表不言自明。

一个通用的解决方案会很好,但如果可以提供这种行为的较低级别的解释,我也会非常感激。感谢任何试图回答这个问题的人。

标签: pythonmatplotlibplot

解决方案


推荐阅读