Построить горизонтальную линию с помощью matplotlib
я использовал сплайн-интерполяции для сглаживания временного ряда, а также хотел бы добавить горизонтальную линию в сюжет. Но, похоже, есть проблема, которая находится вне моей власти. Любая помощь будет очень полезна. Вот что у меня есть:
annual = np.arange(1,21,1)
l = np.array(value_list) # a list with 20 values
spl = UnivariateSpline(annual,l)
xs = np.linspace(1,21,200)
plt.plot(xs,spl(xs),'b')
plt.plot([0,len(xs)],[40,40],'r--',lw=2)
pylab.ylim([0,200])
plt.show()
проблема, кажется, с моим использованием [0,len(xs)]
для построения горизонтальных линий.
4 ответа:
вы правы, я думаю
[0,len(xs)]
сбивает вас с толку. Вы захотите повторно использовать исходную переменную оси xxs
и построить это с другим массивом numpy той же длины, что и ваша переменная в нем.annual = np.arange(1,21,1) l = np.array(value_list) # a list with 20 values spl = UnivariateSpline(annual,l) xs = np.linspace(1,21,200) plt.plot(xs,spl(xs),'b') #####horizontal line horiz_line_data = np.array([40 for i in xrange(len(xs))]) plt.plot(xs, horiz_line_data, 'r--') ###########plt.plot([0,len(xs)],[40,40],'r--',lw=2) pylab.ylim([0,200]) plt.show()
надеюсь, что проблема решена!
вы ищете axhline (горизонтальная линия оси). Ниже будет дана горизонтальная линия при y = 0,5, например.
import matplotlib.pyplot as plt plt.axhline(y=0.5, color='r', linestyle='-') plt.show()
если вы хотите нарисовать горизонтальную линию в осях, вы также можете попробовать ax.hlines () метод. Вам нужно указать
y
постион иxmin
иxmax
в координате данных (т. е. ваш фактический диапазон данных по оси x). Пример фрагмента кода:import matplotlib.pyplot as plt import numpy as np x = np.linspace(1, 21, 200) y = np.exp(-x) fig, ax = plt.subplots() ax.plot(x, y) ax.hlines(y=0.2, xmin=4, xmax=20, linewidth=2, color='r') plt.show()
фрагмент выше будет строить горизонтальную линию в осях на
y=0.2
. Горизонтальная линия начинается сx=4
и заканчивается наx=20
. Создаваемый образ это: