Python利用pandas和matplotlib實現(xiàn)繪制雙柱狀圖
在數(shù)據(jù)分析和可視化中,常用的一種圖形類型是柱狀圖。柱狀圖能夠清晰地展示不同分類變量的數(shù)值,并支持多組數(shù)據(jù)進(jìn)行對比。本篇文章將介紹如何使用Python繪制雙柱狀圖。
準(zhǔn)備工作
在開始繪制柱狀圖之前,需要先安裝matplotlib和pandas這兩個Python庫??梢酝ㄟ^pip安裝:
pip install matplotlib pip install pandas
導(dǎo)入所需庫
import pandas as pd import matplotlib.pyplot as plt
讀取并處理數(shù)據(jù)
# 讀取Excel文件 df = pd.read_excel(r'C:\Users\Admin\Desktop\數(shù)據(jù)核對\新建 XLSX 工作表.xlsx', sheet_name='Sheet3') # 設(shè)置柱狀圖的寬度 bar_width = 0.35 # 設(shè)置x軸的位置 x = df.index
首先使用Pandas讀取Excel文件,然后根據(jù)實際情況設(shè)置柱狀圖的寬度和x軸位置。這里我們使用DataFrame的索引作為x軸。
繪制柱狀圖
# 繪制柱狀圖 fig, ax = plt.subplots() rects1 = ax.bar(x - bar_width/2, df['銷售數(shù)量'], bar_width, label='銷售數(shù)量') rects2 = ax.bar(x + bar_width/2, df['銷售數(shù)量2'], bar_width, label='銷售數(shù)量2')
使用matplotlib繪制柱狀圖,其中subplots()
方法會返回一個Figure對象和一個Axes對象。然后使用bar()
方法繪制兩組柱狀圖,并設(shè)置標(biāo)簽。
添加標(biāo)簽和標(biāo)題
# 添加標(biāo)簽和標(biāo)題 ax.set_xlabel('店鋪名稱') ax.set_ylabel('銷售數(shù)量') ax.set_title('Double Bar Chart') ax.set_xticks(x) ax.set_xticklabels(df['店鋪名稱']) ax.legend()
添加數(shù)據(jù)標(biāo)簽
# 添加數(shù)據(jù)標(biāo)簽 for rect in rects1: height = rect.get_height() ax.annotate('{}'.format(height), xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 3), # 3 points vertical offset textcoords="offset points", ha='center', va='bottom') for rect in rects2: height = rect.get_height() ax.annotate('{}'.format(height), xy=(rect.get_x() + rect.get_width() / 2, height/2), xytext=(0, 3), # 3 points vertical offset textcoords="offset points", ha='center', va='top')
對于每個柱狀圖,使用annotate()
方法添加數(shù)據(jù)標(biāo)簽。
顯示圖形
# 顯示圖形 plt.show()
最后使用show()
方法顯示圖形。
效果圖展示
完整代碼
import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.family'] = ['SimHei'] # 指定中文字體為黑體 # 讀取Excel文件 df = pd.read_excel(r'C:\Users\Admin\Desktop\數(shù)據(jù)核對\新建 XLSX 工作表.xlsx', sheet_name='Sheet3') # 設(shè)置柱狀圖的寬度 bar_width = 0.35 # 設(shè)置x軸的位置 x = df.index # 繪制柱狀圖 fig, ax = plt.subplots() rects1 = ax.bar(x - bar_width/2, df['銷售數(shù)量'], bar_width, label='銷售數(shù)量') rects2 = ax.bar(x + bar_width/2, df['銷售數(shù)量2'], bar_width, label='銷售數(shù)量2') # 添加標(biāo)簽和標(biāo)題 ax.set_xlabel('店鋪名稱') ax.set_ylabel('銷售數(shù)量') ax.set_title('Double Bar Chart') ax.set_xticks(x) ax.set_xticklabels(df['店鋪名稱']) ax.legend() # 添加數(shù)據(jù)標(biāo)簽 for rect in rects1: height = rect.get_height() ax.annotate('{}'.format(height), xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 3), # 3 points vertical offset textcoords="offset points", ha='center', va='bottom') for rect in rects2: height = rect.get_height() ax.annotate('{}'.format(height), xy=(rect.get_x() + rect.get_width() / 2, height/2), xytext=(0, 3), # 3 points vertical offset textcoords="offset points", ha='center', va='top') # 顯示圖形 plt.show()
到此這篇關(guān)于Python利用pandas和matplotlib實現(xiàn)繪制雙柱狀圖的文章就介紹到這了,更多相關(guān)Python雙柱狀圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于matplotlib-legend 位置屬性 loc 使用說明
這篇文章主要介紹了關(guān)于matplotlib-legend 位置屬性 loc 使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05python3實現(xiàn)將json對象存入Redis以及數(shù)據(jù)的導(dǎo)入導(dǎo)出
這篇文章主要介紹了python3實現(xiàn)將json對象存入Redis以及數(shù)據(jù)的導(dǎo)入導(dǎo)出,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python實現(xiàn)鏈表反轉(zhuǎn)的方法分析【迭代法與遞歸法】
這篇文章主要介紹了Python實現(xiàn)鏈表反轉(zhuǎn)的方法,結(jié)合實例形式分析了Python迭代法與遞歸法實現(xiàn)鏈表反轉(zhuǎn)的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2020-02-02python控制windows剪貼板,向剪貼板中寫入圖片的實例
今天小編就為大家分享一篇python控制windows剪貼板,向剪貼板中寫入圖片的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05Python在后臺自動解壓各種壓縮文件的實現(xiàn)方法
這篇文章主要介紹了Python在后臺自動解壓各種壓縮文件的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11Python ValueError: invalid literal for int() with base 10 實用
這篇文章主要介紹了Python ValueError: invalid literal for int() with base 10 實用解決方法,本文使用了一個取巧方法解決了這個問題,需要的朋友可以參考下2015-06-06在Python下使用Txt2Html實現(xiàn)網(wǎng)頁過濾代理的教程
這篇文章主要介紹了在Python下使用Txt2Html實現(xiàn)網(wǎng)頁過濾代理的教程,來自IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下2015-04-04