Matplotlib繪圖時(shí)x軸標(biāo)簽重疊的解決辦法

在使用Matplotlib畫(huà)圖時(shí),我遇到了一個(gè)尷尬的情況,那就是當(dāng)x軸的標(biāo)簽名字很長(zhǎng)的時(shí)候,在繪制圖形時(shí),發(fā)生了x軸標(biāo)簽互相重疊的情況。
本文主要通過(guò)一個(gè)簡(jiǎn)單的示例,探索了以上描述問(wèn)題的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)行繪圖的時(shí)候,就出現(xiàn)了本文一開(kāi)始描述的問(wèn)題,我們可以從柱狀圖看到,除了第1個(gè)x軸標(biāo)簽之外,后面4個(gè)都發(fā)生了重疊。

方法一:拉長(zhǎng)畫(huà)布

既然x軸標(biāo)簽是由于橫向空間不足,導(dǎo)致發(fā)生了重疊,那么,我們只需要將圖形的橫向空間拉長(zhǎng)即可,也就是設(shè)置一個(gè)更大的畫(huà)布。

fig = plt.figure(figsize=(12,4))    # 設(shè)置畫(huà)布大小

plt.bar(df['sport_type'], df['score'])

繪圖結(jié)果:


但是該方法存在一個(gè)很大的問(wèn)題,那就是當(dāng)x軸標(biāo)簽數(shù)量很多時(shí),那么就無(wú)法通過(guò)這樣的方法進(jìn)行解決了。

方法二:調(diào)整標(biāo)簽字體大小

方法二是方法一的逆向思路,既然可以調(diào)大畫(huà)布,那么反過(guò)來(lái),我們也可以調(diào)小x軸標(biāo)簽字體。

plt.tick_params(axis='x', labelsize=8)    # 設(shè)置x軸標(biāo)簽大小

plt.bar(df['sport_type'], df['score'])

繪圖結(jié)果:


方法三:橫縱顛倒

只要我們將縱向柱狀圖改成橫向柱狀圖,那么就不會(huì)存在這種問(wèn)題。

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種方法都是本人目前所能想到的,較為簡(jiǎn)單的解決辦法,如果有更好的辦法,也歡迎與本人進(jìn)行交流。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容