Установить точки за пределами графика на верхний предел

Может такой вопрос уже был, но я не нашел.

Я делаю точечную диаграмму в Python. В иллюстративных целях я не хочу устанавливать диапазон осей таким образом, чтобы были включены все точки - могут быть некоторые действительно высокие или очень низкие значения, и все, что меня волнует в этих точках, это то, что они существуют, то есть они нужны находиться в сюжете, но не по своему действительному значению — скорее, где-то в верхней части полотна.

Я знаю, что в IDL для этого есть хороший короткий синтаксис: в plot(x,y<value) любое значение y больше value будет просто помещено в y=value.

Я ищу что-то подобное в Python. Кто-нибудь может мне помочь?


person user1991    schedule 06.10.2016    source источник


Ответы (2)


вы можете просто использовать np.minimum для данные y, чтобы установить все, что выше вашего верхнего предела, до этого предела. 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()

введите здесь описание изображения

person tmdavison    schedule 06.10.2016
comment
Как я могу установить нижний предел? Как я пробовал это xmin=0,8, xmax=0,18 и plt.(np.minimum(x, xmin,xmax),y), но это не сработало.! @Том - person astroluv; 24.09.2018

В 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()
person Paul Brodersen    schedule 06.10.2016