将地块外的点设置为上限

Set points outside plot to upper limit

也许这个问题已经存在,但我找不到它。

我正在 Python 中绘制散点图。出于说明目的,我不想设置我的轴​​范围以包含所有点 - 可能有一些非常高或非常低的值,我关心的是这些点是否存在 - 也就是说,他们需要在情节中,而不是在他们的实际价值上——而是在 canvas.

顶部的某个地方

我知道在 IDL 中有一个很好的简短语法:在 plot(x,y<value) 中,y 中大于 value 的任何值都将简单地放在 y=value.

我正在 Python 寻找类似的东西。有人可以帮我吗?

matplotlib 中没有等效的语法糖。您将必须预处理您的数据,例如:

import numpy as np
import matplotlib.pyplot as plt

ymin, ymax = 0, 0.9
x, y = np.random.rand(2,1000)
y[y>ymax] = ymax
fig, ax = plt.subplots(1,1)
ax.plot(x, y, 'o', ms=10)
ax.set_ylim(ymin, ymax)
plt.show()

您只需对 y 数据使用 np.minimum 即可将超出上限的任何值设置为该上限。 np.minimum 按元素计算最小值,因此只有那些大于 ymax 的值才会设置为 ymax

例如:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0., np.pi*2, 30)
y = 10. * np.sin(x)

ymax = 5

fig, ax = plt.subplots(1)
ax.scatter(x, np.minimum(y, ymax))

plt.show()