作者treefrog (Roots)
看板Python
标题[问题] matplotlib.pyplot 的y轴数字太长
时间Tue Jun 25 23:27:28 2019
各位大大好,
小妹正在练习用matplotlib. Pyplot 练习画群组直条图,但发现y轴数字太长,单位变成「le7」,请问各位大大有无办法讲单位改成千位计算,并且标记单位「$k」呢?
# 资料表/图:
https://imgur.com/a/xqhpTwj
# 程式:
import pandas as pd
import matplotlib.pyplot as plt
product_rev=pd.read_excel("revenue.xlsx")
product_rev.sort_values(by="2017",inplace=True,ascending=False)
print(product_rev)
product_rev.plot.bar(x="Product",y=["2016","2017"],color=["blue","orange"])
plt.title("Total revenue by products",fontsize=16,fontweight="bold")
plt.xlabel("Product")
plt.ylabel("Figure")
plt.tight_layout()
plt.show()
-----
Sent from JPTT on my iPhone
--
Hakuna Matata
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.9.98.23 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1561476452.A.82C.html
※ 编辑: treefrog (101.9.98.23 台湾), 06/25/2019 23:33:15
1F:推 WayneHong: 感觉直接改原始资料比较快 06/26 08:28
2F:推 yuasa: 先用product_rev.div(1000),把你的原始资料都除1000。再改 06/26 12:29
3F:→ yuasa: 你ylabel的单位就好了 06/26 12:31
4F:→ treefrog: 不好意思,请问怎麽修改单位? 06/26 12:37
5F:→ gmccntzx1: google “matplotlib FuncFormatter” 06/26 12:42
感谢各位大大解答,後来有找到方式解决,分享给有一样问题的捧友 :)
# 修改之程式码:
import pandas as pd
from pandas import read_excel
import matplotlib.pyplot as plt
product_rev=read_excel("revenue.xlsx")
product_rev["2016"]=product_rev["2016"].div(1000) #数字除以1,000
product_rev["2017"]=product_rev["2017"].div(1000) #数字除以1,000
product_rev.sort_values(by="2017",inplace=True,ascending=False)
print(product_rev)
ax =
product_rev.plot.bar(x="Product",y=["2016","2017"],color=["blue","orange"])
plt.title("Total revenue by products",fontsize=16,fontweight="bold")
plt.xlabel("Product")
plt.ylabel("Figure")
# 加上单位 $K
ax.ticklabel_format(axis='y', style='plain')
plt.text(-0.03,1.07,'($K)',
horizontalalignment='center',verticalalignment='center',
transform=ax.transAxes)
# 将 X轴名称旋转 45度
ax1=plt.gca()
ax1.set_xticklabels(product_rev["Product"],rotation="45",ha="right")
plt.tight_layout()
plt.show()
#产生 Bar chart如下:(以千为单位计算,标记单位为$K)
https://imgur.com/a/nxAP3nG
※ 编辑: treefrog (101.9.98.23 台湾), 06/26/2019 15:45:09
6F:→ Pieteacher: Try plt.semilogy() 06/26 18:54