将积分外的点设置为上限

时间:2016-10-06 11:33:07

标签: python matplotlib plot limits

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

我在Python中制作散点图。为了说明的目的,我不想设置我的轴​​范围,以便包括所有点 - 可能有一些非常高或非常低的值,我关心的那些点是它们存在 - 也就是说,他们需要在情节中,但不是在他们的实际价值 - 而是在画布顶部的某个地方。

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您可以在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()

enter image description here