1. ホーム
  2. python

[解決済み] matplotlib を使って水平線をプロットする

2022-02-24 09:45:51

質問

スプライン補間で時系列を平滑化し、プロットに水平線を追加したいのですが、どうすればよいでしょうか?しかし、私の手には負えない問題があるようです。何か手助けがあれば本当に助かります。以下は私が持っているものです。

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)] を水平線プロットに使用することができます。

解決方法は?

おっしゃるとおり [0,len(xs)] があなたを混乱させる。元のX軸の変数を再利用したいでしょう xs という変数が入った同じ長さの別の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()

これで問題が解決するといいのですが