LoginSignup
pinkypanda
@pinkypanda

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Matplotlibにおいてax.set_xlim()が効かない

解決したいこと

データフレームのデータをMatplotlibを用いて作図する際に、
ax.set_xlim([])が効かないエラーが生じています。
作図自体はでき、エラーメッセージもありませんがデータが乗っていない状態です。 (Fig. 1)

軸範囲設定セクションを使用しなければ作図はできます。(Fig. 2)
また、ax.plot()を使用しなければ意図した範囲のfigureを得ることができます。(Fig. 3)

発生している問題・エラー

scio (1).jpg
Fig. 1 当該コードを使った作図
scio1 (1).jpg
Fig. 2 範囲指定セクション不使用
scio2.jpg
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

No Answers yet.

Your answer might help someone💌