iT邦幫忙

0

用matplotlib 畫bar chart時, 因y軸的標題是數字(2016, 2017), 程式執行出現異常!

  • 分享至 

  • xImage
  1. 背景:
    我將Excel檔內的資料轉成DataFrames,其語法如下:
    import pandas as pd
    import matplotlib.pyplot as plt
    Goods=pd.read_excel("./Test11.xlsx")
    print(Goods)

==> 得到以下DataFrame:
Item 2016 2017
0 Shoes 2,000 2500
1 Clothes 1,200 1,900
2 Glasses 3,000 4,000

再用以下語法要畫出此DataFrame的bar chart:
plt.bar(Goods.Item,Goods.2016)
plt.bar(Goods.Item,Goods.2017)
plt.show()

在VScode 執行時, 出現以下的異常訊息:
File "c:\Users\user\Desktop\Pythod\PandastoExcel.py", line 6
plt.bar(Goods.Item,Goods.2016)
^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?

2.問題
若將2016 及2017 改為文字(如NUM1, NUM2), 上面的異常訊息即消失,可正常畫出BAR CHART, 想請問各位前輩, 是否用plt.bar(),其Y軸LABEL就不能用數字?還是語法上要如何修改?
請各位前輩不吝指教,謝謝!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
re.Zero
iT邦研究生 5 級 ‧ 2023-06-03 10:08:47
最佳解答

pandas 的索引語法可參考 Selection - 10 minutes to pandas 這段。
以下範例:

## Tested @[Python 3.10.9];
import pandas as pd
import matplotlib.pyplot as plt
Goods = pd.read_excel('./myTest01.xlsx')
print(Goods, end = '\n'*2)
## 列出 Goods 欄位索引: 
print(Goods.columns, end = '\n'*2)
## 欄位索引語法範例: 
plt.bar(Goods['Item'],Goods[2016])
plt.show()
## 以下是繪製兩個圖表: 
fig, axs = plt.subplots(2)
for idx,obj in enumerate(Goods.columns[1:]):
	if 0: ## Message for debug;
		print(f'[myDbg]:[idx,obj]:[{idx},{obj}];')
	axs[idx].bar(Goods['Item'],Goods[obj])
	axs[idx].set_title(str(obj))
fig.tight_layout()
plt.show()
## 

其他參考:


P.s.:

  • 請善用 程式碼與語法高亮標記 - iT邦幫忙 的 Markdown
    不然, 至少, 編輯區工具列, 有個 新增程式碼 (Ctrl-Alt-C) 能用。
    editor-toolbar
    ( 程式碼區塊 亦可用以存放各種文字資料, 以方便他人閱覽。 )

  • iThelp-Markdown 的語法高亮之自動識別時常錯判, 建議用下面方式 (py) 指定語言:

```py
print('hello, world')
```

我要發表回答

立即登入回答