2017-09-28 14 views
0

2つの系列を持つデータフレームから積み上げ棒グラフをプロットしようとしています。 2番目のシリーズは非常に少量のデータしか持っていませんが、チャートではまだ小さな栗色の線として表示されると思います。グラフをpngファイルとして保存すると、最初の2つのバーに2番目の「ドライバ」データセットが表示されません。しかし、その後の棒はすべてそれらを示します。以下は、私がチャートのスナップショットと共に使用しているコードです。最初の2つのバーに「ドライバ」シリーズが表示されていないことがわかりますか?どのように私はこれを改善することができますか?Python Matplotlib積み上げ棒グラフをプロットする

コード:使用

df_trend = pd.read_csv('test_log.csv', index_col=0, skiprows=0) 
df_trend.index = (pd.to_datetime(df_trend.index)).strftime("%m/%d %H:00") 

fig = plt.figure() 
rcParams['figure.figsize'] = df_trend.shape[0], 4 
ax = fig.add_subplot(111) 
y = df_trend.tail(24).plot.bar(stacked=True, color=['skyblue', 'maroon'], edgecolor="none", width=0.2) 
y.legend(loc="lower left", fontsize=9) 
plt.tick_params(axis='both', which='both', labelsize=9) 
fig.autofmt_xdate() 

plt.title('Cars vs Drivers', fontsize=10, y=1.05) 
plt.savefig('cars_drivers.png', bbox_inches='tight') 
plt.close() 

は、データフレーム:

   Cars Drivers 
09/27 09:00 243000  300 
09/28 09:00 243970  190 
09/28 13:00 267900  290 
09/28 17:00 254770  180 
09/28 18:00 250860  290 

チャート:私はあなたがすることができると思うが、私はあなたが#2をしたいと思います plot chart output

答えて

1

もの:

  1. スタックされた棒グラフを使用しないでください(これが私の最初の選択です)。
  2. 図のDPIを増やす:plt.savefig('cars_drivers.png', bbox_inches='tight',dpi=1000)
  3. 変更ylim範囲:plt.ylim([200e3, 300e3])
  4. ドライバの変更スケールと凡例に表示する列の名前を変更:

    df_trend['Drivers'] = 10*df_trend['Drivers']

    df_trend = df_trend.rename(columns={'Drivers': 'Drivers x 10'})

+0

まず、複数のソリューションを提供していただきありがとうございます。私はまた、ソリューション1が最適だと考えていますが、積み重ねた棒グラフは受信者が望みます。私はすべてのオプションを試しましたが、オプション3は私のために働いた唯一のものでした。 Gergesありがとう。 – MBasith

関連する問題