2017-10-17 61 views
1

我想繪製兩個變量但沒有成功的圖形。我的目標是創建一個Event1和Events2出現的條形圖,以便更容易地比較「名稱」(每個名稱的兩個條)。我的代碼錯誤地生成了兩張圖。你能指出我正確的做法嗎?謝謝。根據數據框製作2個變量的條形圖

我df是:

  Name Events1 Events2 
0 Accounting  3  3 
1 Reporting  1  4 
2  Finance  1  13 
3  Audit  1  17 
4 Template  2  40 

代碼:

import matplotlib.pyplot as plt 
ax = df[['Events1','Events2']].plot(kind='bar', title ="test", figsize=(15, 10), legend=True, fontsize=12) 
ax.set_xlabel("Name", fontsize=12) 
ax.set_ylabel("Number", fontsize=12) 
plt.show() 

回答

1

你可以簡單地通過兩個Y軸值

df.plot.bar(x = 'Name', y = ['Events1', 'Events2'], rot = 40) 

如果您要註釋的酒吧,嘗試

fig, ax = plt.subplots() 
df.plot.bar(x = 'Name', y = ['Events1', 'Events2'], rot = 40, ax = ax) 
for p in ax.patches: 
    ax.annotate(np.round(p.get_height(),decimals=2), (p.get_x()+p.get_width()/2., p.get_height())) 

enter image description here

+0

非常感謝!任何想法如何可以在酒吧內的「名稱」標籤?我正在閱讀文檔,但無法確定。 – Gonzalo

+0

這是你想要的嗎? – Vaishali

+0

對不起,我的意思是寫在酒吧裏的審計,財務等字樣。不要從圖像底部獲取空間。 – Gonzalo

2

使用​​

In [3596]: df.set_index('Name').plot.bar() 
Out[3596]: <matplotlib.axes._subplots.AxesSubplot at 0x2954d208> 

enter image description here


In [3595]: df.set_index('Name') 
Out[3595]: 
      Events1 Events2 
Name 
Accounting  3  3 
Reporting   1  4 
Finance   1  13 
Audit    1  17 
Template   2  40 
相關問題