Я использовал сплайн-интерполяцию для сглаживания временного ряда, а также хотел бы добавить горизонтальную линию к графику. Но, похоже, есть проблема, которую я не могу понять. Любая помощь будет действительно полезной. Вот что у меня есть:
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)]
для построения горизонтальных линий.
python
matplotlib
Ibe
источник
источник
Вы ищете
axhline
(горизонтальная ось). Например, следующее даст вам горизонтальную линию вy = 0.5
:источник
axhline
.Если вы хотите провести горизонтальную линию по осям, вы также можете попробовать
ax.hlines()
метод. Необходимо указатьy
положение иxmin
иxmax
в данных координаты (т.е. в диапазон фактических данных в оси х). Пример фрагмента кода:В приведенном выше фрагменте будет построена горизонтальная линия по осям в точке
y=0.2
. Горизонтальная линия начинается вx=4
и заканчивается вx=20
. Сгенерированное изображение:источник
axhline
когда вам нужен определенный диапазон x линии, которую вы собираетесь нарисовать. В чем разница между «axhline» и «hlines»?axhline
,xmin
иxmax
выражены в координатах осей, так что они находятся в диапазоне [0, 1]. Вы можете увидеть здесь для разницы между различными системами координат.xmin
иxmax
разница - единственное различие междуaxhline
иhlines
, разве последнее не доминирует над первым?Использование
matplotlib.pyplot.hlines
:list
кy
параметру.y
можно передать как одно местоположение:y=40
y
можно передать как несколько местоположений:y=[39, 40, 41]
fig, ax = plt.subplots()
, то заменитеplt.hlines
илиplt.axhline
наax.hlines
илиax.axhline
соответственно.matplotlib.pyplot.axhline
можно построить только одно место (напримерy=40
)plt.plot
ax.plot
источник
В дополнение к наиболее upvoted ответ здесь, можно также цепь
axhline
после вызоваplot
на черезpandas
«сDataFrame
.источник
Хороший и простой способ для тех, кто всегда забывает команду
axhline
:В вашем случае
xs = x
иy = 40
. Если len (x) велико, это становится неэффективным, и вам действительно следует использоватьaxhline
.источник
Вы можете использовать
plt.grid
для рисования горизонтальной линии.источник