在使用Matplotlib
畫圖時,我遇到了一個尷尬的情況,那就是當(dāng)x軸的標(biāo)簽名字很長的時候蕴坪,在繪制圖形時,發(fā)生了x軸標(biāo)簽互相重疊的情況敬锐。
本文主要通過一個簡單的示例背传,探索了以上描述問題的4種解決方法。
示例
import pandas as pd
import matplotlib.pyplot as plt
# 準(zhǔn)備數(shù)據(jù)
data = {'sport_type':['running', 'walking', 'variable speed running', 'variable speed walking', 'swimming'],
'score':[88, 55, 68, 77, 80]}
df = pd.DataFrame(data)
# 繪制圖形
plt.bar(df['sport_type'], df['score'])
繪圖結(jié)果:
在使用上述數(shù)據(jù)進(jìn)行繪圖的時候台夺,就出現(xiàn)了本文一開始描述的問題径玖,我們可以從柱狀圖看到,除了第1個x軸標(biāo)簽之外颤介,后面4個都發(fā)生了重疊梳星。
方法一:拉長畫布
既然x軸標(biāo)簽是由于橫向空間不足,導(dǎo)致發(fā)生了重疊滚朵,那么冤灾,我們只需要將圖形的橫向空間拉長即可,也就是設(shè)置一個更大的畫布辕近。
fig = plt.figure(figsize=(12,4)) # 設(shè)置畫布大小
plt.bar(df['sport_type'], df['score'])
繪圖結(jié)果:
但是該方法存在一個很大的問題韵吨,那就是當(dāng)x軸標(biāo)簽數(shù)量很多時,那么就無法通過這樣的方法進(jìn)行解決了亏推。
方法二:調(diào)整標(biāo)簽字體大小
方法二是方法一的逆向思路学赛,既然可以調(diào)大畫布,那么反過來吞杭,我們也可以調(diào)小x軸標(biāo)簽字體盏浇。
plt.tick_params(axis='x', labelsize=8) # 設(shè)置x軸標(biāo)簽大小
plt.bar(df['sport_type'], df['score'])
繪圖結(jié)果:
方法三:橫縱顛倒
只要我們將縱向柱狀圖改成橫向柱狀圖,那么就不會存在這種問題芽狗。
plt.barh(df['sport_type'], df['score']) # 繪制橫向柱狀圖
繪圖結(jié)果:
方法四:標(biāo)簽旋轉(zhuǎn)
我們只需要將x軸的標(biāo)簽旋轉(zhuǎn)一定的角度绢掰,就可以讓其不再發(fā)生重疊。
plt.bar(df['sport_type'], df['score'])
plt.xticks(rotation=-15) # 設(shè)置x軸標(biāo)簽旋轉(zhuǎn)角度
繪圖結(jié)果:
以上4種方法都是本人目前所能想到的童擎,較為簡單的解決辦法滴劲,如果有更好的辦法,也歡迎與本人進(jìn)行交流顾复。