Строчный участок в matplotlib? - программирование
Подтвердить что ты не робот

Строчный участок в matplotlib?

Я хочу plot(x, sin(x)), но вместо строки от (xi,yi) до (x_i+1,y_i+1) мне нужна вертикальная линия для каждой точки от (xi,0) до (xi,yi), поскольку иногда интерполяция между точками не имеет смысла (например, квантование данные) (и эта вертикальная линия выглядит намного лучше, чем без).

Похоже на строковый график ниже (из документов Matlab), но с возможностью отключения кругов и "-" между точками. К сожалению, я не смог найти подходящую функцию построения в документации matplotlib.

stem plot

4b9b3361

Ответ 1

В matplotlib также есть стволовый сюжет (он же леденец).


Ниже вы можете найти пример из документации.

import matplotlib.pyplot as plt
import numpy as np

# returns 10 evenly spaced samples from 0.1 to 2*PI
x = np.linspace(0.1, 2 * np.pi, 10)

markerline, stemlines, baseline = plt.stem(x, np.cos(x), '-.')

# setting property of baseline with color red and linewidth 2
plt.setp(baseline, color='r', linewidth=2)

plt.show()

stem plot


Если вы хотите отрегулировать y-позицию базовой линии, вы можете использовать bottom параметр.

(адаптированный) Пример:

import matplotlib.pyplot as plt
import numpy as np

# returns 10 evenly spaced samples from 0.1 to 2*PI
x = np.linspace(0.1, 2 * np.pi, 10)

plt.stem(x, np.cos(x), '-.', bottom=-2)

plt.show()

stem plot 2

Ответ 2

Я думаю, вы хотите использовать linestyle = 'steps -'

plot(x, sin(x), linestyle='steps--')