Matplotlibにおいてax.set_xlim()が効かない
解決したいこと
データフレームのデータをMatplotlibを用いて作図する際に、
ax.set_xlim([])が効かないエラーが生じています。
作図自体はでき、エラーメッセージもありませんがデータが乗っていない状態です。 (Fig. 1)
軸範囲設定セクションを使用しなければ作図はできます。(Fig. 2)
また、ax.plot()を使用しなければ意図した範囲のfigureを得ることができます。(Fig. 3)
発生している問題・エラー
Fig. 1 当該コードを使った作図
Fig. 2 範囲指定セクション不使用
Fig. 3 データのプロットなし
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = ['Times New Roman'] + plt.rcParams['font.serif']
plt.rcParams['font.size'] = 14
i, j = 0, 4
wave = Waveselect[i]
#データフレーム読み込み、必要範囲指定
data = pd.read_csv(list1[i],header=[0,1],index_col=0)
tag2 = data.iloc[5:,:].fillna(0)
#描画
fig, ax =plt.subplots(1, 1, figsize=(6, 4))
ax.plot(tag2)
#軸範囲設定
xm,xl = int(float(tag2.index[0])), int(float(tag2.index[-1]))
xin = abs(int((xl -xm)/4))
ax.set_xlim([xm,xl])
ym,yl = (tag2.min().min()), (tag2.max().max())
yin = abs((yl-ym)/4)
ax.set_ylim([ym,yl])
#ax.set_xlabel('Wavenumber / cm$^{-1}$')
#ax.set_ylabel('Absorbance')
以下使用したデータフレームの一部抜粋です。
('index', '') | ('0', '0') | ('0', '1') | ('0', '2') |
---|---|---|---|
12004.801920768306 | -0.0474366121032383 | 0.0434683295727524 | 0.0584304856428465 |
11990.407673860911 | -0.0461046155739206 | 0.0443730641165146 | 0.0596475680269687 |
11976.047904191617 | -0.0449776902154052 | 0.0451047410211522 | 0.0606647212336983 |
11961.722488038276 | -0.0440666804766926 | 0.0456504670497778 | 0.0614710310137976 |
11947.431302270012 | -0.0433360671163545 | 0.0460431854081593 | 0.062101729275022 |
自分で試したこと
データの形がよろしくないのかな、と元データの方を触ってみました
tag2 = tag2.astype('float')
tag2 = tag2.T.reset_index(drop=True).T
plt.xlim()を使っても解決しません。
ax.set_xlim()内の数値を変えて同様の作図を試みても得られる図が変わらないため、set_xlimが効いていないのかな、と思うのですが解決法を教えていただけますよう、お願いいたします。
0