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

#python #matplotlib #plot #limits

#python #matplotlib #график #ограничения

Вопрос:

Возможно, этот вопрос уже существует, но я не смог его найти.

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

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

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

Ответ №1:

вы можете просто использовать 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()
  

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

Комментарии:

1. Как я могу также установить нижний предел? Как я пробовал это xmin = 0.8, xmax = 0.18 и plt.(np.minimum(x, xmin, xmax), y), но это не сработало.! @tom

Ответ №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()