绘图时,想要 'hold' 一个 x 区间内的 y 值。 [不是 'bar plot' 问题]

When plotting, wanting to 'hold' a y value over an x interval. [Not a 'bar plot' question]

出于某种原因,我对此一无所知:

x = np.arange(5)
[0 1 2 3 4]

y = np.array((3, 6, 1, 9))
[3 6 1 9]

plt.plot(???)

如何处理数组,以便绘图在 0 到 1 的 'bin' 范围内保持不变。即 0 到 1 之间的值 3,保持该值6在1到2之间等等。

这是一个概念示例,因为我真正的问题是我正在从头开始制作频谱图并使用 plt.pcolormesh(X, Y, Z)。我有与此示例类似的数组,但大小不匹配。要么我必须停止使用数字 0 或数字 4 进行匹配,但是匹配在相应方向上有 1 个数据点是错误的。

您需要附加最后一个 y 点,以便两个数组具有相同数量的元素,然后使用 drawstyle="steps-post" 获得类似阶梯的外观。

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(5)
#[0 1 2 3 4]

y = np.array((3, 6, 1, 9))
#[3 6 1 9]

plt.plot(x, np.concatenate((y, [y[-1]])), drawstyle="steps-post")
plt.show()

请注意,这与 plt.pcolormesh(X, Y, Z) 无关,其中 Z 可以 (或 应该 甚至)每个方向都比网格少一个元素。