一、導入需要的庫
# Matplotlib 是 Python 最常用的繪圖庫,pyplot 提供了類似 MATLAB 的繪圖接口
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
二、常用的庫函數
-
plt.plot(x軸,y軸):plot()是畫折線圖的函數。
-
plt.xlabel('日期'):x軸的顯示標簽。
-
plt.ylabel('氣溫(度)'):y軸的顯示標簽。
-
plt.xticks([原數據標簽], [替換后的數據標簽], rotation=300):用于x軸數據標簽的顯示,rotation是傾斜度。
-
plt.title('標題名', loc='left'):圖上的名字顯示,loc代表顯示的位置在哪里。
-
plt.grid(which(網格類型)="major", axis(方向)='both', lw(線的寬度)=1):添加網格線。
-
plt.legend([圖例名稱, ..,],
shadow(陰影) = True,fancybox(圓角矩形)=True)
: 顯示圖例。 -
plt.savefig('名字.格式')
: 保存圖表為圖片 -
plt.show()
: 顯示圖表 -
plt.ylabel('名稱'):設置y軸標簽文本
三、案例一:一周氣溫圖(基礎版)
import matplotlib.pyplot as plt
import numpy as npx = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
# 定義 x 軸數據:包含星期一到星期日的字符串列表
# 用于表示橫坐標的日期標簽high = [28, 28, 25, 18, 17, 20, 25]
# 最高氣溫數據列表(單位假設為攝氏度)
# 按周一到周日順序排列low = [22, 21, 18, 12, 14, 16, 19]
# 最低氣溫數據列表
# 與 high 列表順序一致plt.plot(x, high)
# 繪制最高氣溫折線圖
# 第一個參數 x:橫坐標數據
# 第二個參數 high:縱坐標數據
# 默認使用第一個顏色(藍色)和線性連接plt.plot(x, low)
# 繪制最低氣溫折線圖
# 使用第二個默認顏色(橙色)疊加到同一坐標系plt.show()
# 顯示圖形窗口
# 在腳本中必須調用的函數,用于渲染和顯示所有已繪制的圖形
四、案例二:分店折線圖(中等)
準備好excel文件,拿第一分店的數據
# 導入matplotlib的pyplot模塊,用于繪圖
import matplotlib.pyplot as plt
# 導入pandas模塊,用于數據處理和分析
import pandas as pd# 創建圖形對象,設置圖形參數
plt.figure(num='折線圖', figsize=(6, 4), facecolor='w') # num:圖形名稱, figsize:圖形尺寸(寬6英寸,高4英寸), facecolor:畫布背景色
# 設置全局字體為黑體(解決中文顯示問題)
plt.rcParams['font.sans-serif'] = ['SimHei']# 使用pandas讀取Excel數據文件
df = pd.read_excel('2022年某店鋪3個分店銷售額.xlsx')# 提取月份數據作為x軸
x = df['月份']
# 提取第一分店銷售額數據作為y軸
y = df['第一分店']# 設置x軸標簽文本
plt.xlabel('月份')
# 設置y軸標簽文本
plt.ylabel('銷售額(萬元)')
# 設置圖表標題(指定宋體、字體大小12、黑色)
plt.title('2022年某店鋪第一分店銷售額', fontsize=12, color='k', fontproperties='SimSun')
# 設置y軸顯示范圍(最小值20,最大值30)
plt.ylim(20, 30)# 添加水平參考線(顯示全年平均值,使用虛線樣式)
plt.axhline(y=sum(y)/12, linestyle=':')# 啟用網格線顯示
plt.grid()# 遍歷每個數據點添加數值標簽
for a, b in zip(x, y):# 在對應坐標位置顯示數值,保留兩位小數,水平居中對齊plt.text(a, b+0.2, '%.2f' % b, ha='center',va='bottom')# 繪制折線圖(青色虛線,方形標記,線寬2)
plt.plot(x, y, 'c:s', linewidth=2)# 添加圖例(包含平均銷售額和分店數據說明,帶陰影效果,圓角邊框,定位在右下角)
plt.legend(('平均銷售額','第一分店'), shadow=True, fancybox=True, loc=4)# 再次繪制折線圖(使用默認參數,可能覆蓋前次樣式)
plt.plot(x, y)# 保存生成的圖表為PNG圖片文件
plt.savefig('2022年某店鋪第一分店銷售額.png')
# 在窗口中顯示圖表
plt.show()
?
五、案例三:正弦余弦圖(中等)
# 導入必要的庫
import numpy as np
import matplotlib.pyplot as plt# 設置中文字體(適用于Windows)
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題
plt.rcParams['axes.unicode_minus'] = False # 創建一個名為'正'的新圖形窗口
plt.figure(num='正')# 生成x軸數據:在-π到π之間生成256個等間距點(包含終點)
x = np.linspace(-np.pi, np.pi, 256, endpoint=True)# 計算正弦和余弦函數值
y1 = np.sin(x)
y2 = np.cos(x)# 設置坐標軸標簽
plt.xlabel('x軸') # X軸標簽
plt.ylabel('y軸') # Y軸標簽# 設置x軸顯示范圍(擴展為原范圍的1.5倍)
plt.xlim(x.min() * 1.5, x.max() * 1.5)# 自定義x軸刻度標簽(使用LaTeX符號表示π)
plt.xticks([-4, -2, 0, 2, 4], # 刻度位置(實際數值)[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$\pi/2$', r'$\pi$'] # 顯示文本
)# 添加標題(居中顯示)
plt.title('正弦余弦圖', loc='center')# 繪制正弦曲線(紅色虛線,線寬2)
plt.plot(x, y1, color='r', linestyle='--', linewidth=2)
# 繪制余弦曲線(黑色實線,線寬2)
plt.plot(x, y2, color='k', linestyle='-', linewidth=2)# 添加帶箭頭的注釋(xy指向點坐標,xytext文本位置)
plt.annotate('最小值',xy=(-np.pi/2, -1.0), # 箭頭指向位置xytext=(-(np.pi/2), -0.5), # 文本起始位置arrowprops=dict(arrowstyle='->') # 箭頭樣式
)# 添加網格線(主網格,雙向,線寬1)
plt.grid(which="major", # 顯示主網格axis='both', # 同時顯示x/y軸網格lw=1 # 網格線寬
)# 添加水平參考線(在y=0處,從xmin=0到xmax=0.5)
plt.axhline(y=0, xmin=0, xmax=0.5, linestyle='-', color='r'
)
# 添加垂直參考線(在x=0處)
plt.axvline(x=0, linestyle='-', color='r'
)# 添加垂直參考區域(x在0.5到2.0之間,透明度0.9)
plt.axvspan(xmin=0.5,xmax=2.0,alpha=0.9
)
# 添加水平參考區域(y在0.5到1.0之間,透明度0.3)
plt.axhspan(ymin=0.5,ymax=1.0,alpha=0.3
)# 添加圖例(元組指定條目,loc=1為右上角,帶陰影和圓角邊框)
plt.legend(('正弦函數', '余弦函數'), loc=1, shadow=True, fancybox=True
)# 顯示圖形
plt.show()
六、案例四:銷售額折線圖(進階版)
# 導入 matplotlib 庫的 pyplot 模塊,用于繪圖
import matplotlib.pyplot as plt
# 導入 pandas 庫,用于數據處理和讀取 Excel 文件
import pandas as pd# 創建一個新的圖形窗口,設置窗口標題為 '多柱形圖',圖形大小為 9x6 英寸,背景顏色為白色
plt.figure(num='折線圖', figsize=(9, 6), facecolor='w')# 設置 matplotlib 使用的字體為楷體,以正確顯示中文
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 解決負號顯示為方塊的問題,使負號能正常顯示
plt.rcParams['axes.unicode_minus'] = False# 使用 pandas 的 read_excel 函數讀取 Excel 文件 '不同產品各季度的銷售額.xlsx',并將數據存儲在 DataFrame 對象 df 中
df = pd.read_excel('不同產品各季度的銷售額.xlsx')# 從 DataFrame 中提取 '季度' 列的數據,作為 x 軸的數據
x = df['季度']
# 從 DataFrame 中提取 '產品A' 列的數據,作為產品 A 的銷售額數據
y1 = df['產品A']
# 從 DataFrame 中提取 '產品B' 列的數據,作為產品 B 的銷售額數據
y2 = df['產品B']
# 從 DataFrame 中提取 '產品C' 列的數據,作為產品 C 的銷售額數據
y3 = df['產品C']# 設置圖表的標題為 '不同產品各季度的銷售額',字體大小為 20
plt.title('不同產品各季度的銷售額', fontsize=20)# 設置 y 軸的標簽為 '銷售額(元)'
plt.ylabel('銷售額(元)', fontsize=16)# 設置 y 軸的取值范圍為 0 到 10000
plt.ylim(0, 10000)# 在圖表中添加網格線,方便觀察數據
plt.grid()# 遍歷產品 A 的每個數據點,在數據點上方 500 個單位處添加銷售額的文本標簽
for a, b in zip(x, y1):# 在坐標 (a, b+500) 處添加文本,文本內容為 b 的整數值,水平居中對齊plt.text(a, b + 500, '%d' % b, ha='center')# 繪制產品 A 的折線圖,x 軸為季度數據,y 軸為產品 A 的銷售額數據,線條顏色為紅色,樣式為虛線,數據點用圓形標記
plt.plot(x, y1, 'r:o')# 遍歷產品 B 的每個數據點,在數據點上方 500 個單位處添加銷售額的文本標簽
for a, b in zip(x, y2):# 在坐標 (a, b+500) 處添加文本,文本內容為 b 的整數值,水平居中對齊plt.text(a, b + 500, '%d' % b, ha='center')# 繪制產品 B 的折線圖,x 軸為季度數據,y 軸為產品 B 的銷售額數據,線條顏色為黃色,樣式為點劃線,數據點用菱形標記
plt.plot(x, y2, 'y-.D')# 遍歷產品 C 的每個數據點,在數據點上方 200 個單位處添加銷售額的文本標簽
for a, b in zip(x, y3):# 在坐標 (a, b+200) 處添加文本,文本內容為 b 的整數值,水平居中對齊plt.text(a, b + 200, '%d' % b, ha='center')# 繪制產品 C 的折線圖,x 軸為季度數據,y 軸為產品 C 的銷售額數據,線條顏色為藍色,樣式為雙虛線,數據點用特定樣式標記
plt.plot(x, y3, 'b--4')# 添加圖例,圖例標簽分別為 '產品A'、'產品B'、'產品C',添加陰影效果和圓角邊框
plt.legend(['產品A', '產品B', '產品C'], shadow=True, fancybox=True)# 顯示繪制好的圖表
plt.show()
?七、案例五:不同行業的平均工資(進階版)
# 導入 matplotlib 庫中的 pyplot 模塊,該模塊提供了類似于 MATLAB 的繪圖接口,用于創建各種圖表
import matplotlib.pyplot as plt
# 導入 pandas 庫,它是一個強大的數據處理和分析工具,常用于讀取和處理結構化數據
import pandas as pd# 創建一個新的圖形窗口,設置窗口標題為 '2021年各行業城鎮單位就業人員年平均工資'
# 圖形的大小為 12 英寸寬,9 英寸高,背景顏色設置為白色
plt.figure(num='2021年各行業城鎮單位就業人員年平均工資', figsize=(12, 9), facecolor='w')# 設置 matplotlib 的字體為黑體,這樣可以正確顯示中文
plt.rcParams['font.sans-serif'] = ['SimHei']# 使用 pandas 的 read_excel 函數讀取 Excel 文件 '不同行業城鎮單位就業人員年平均工資.xlsx'
# 并將文件中的數據存儲在 DataFrame 對象 df 中
df = pd.read_excel('不同行業城鎮單位就業人員年平均工資.xlsx')# 從 DataFrame 對象 df 中提取 '行業' 列的數據,存儲在變量 hy 中
hy = df['行業']
# 從 DataFrame 對象 df 中提取 '2021年' 列的數據,存儲在變量 yuan 中
yuan = df['2021年']# 為圖表設置標題,標題內容為 '2021年各行業城鎮單位就業人員年平均工資'
# loc='center' 表示標題居中顯示
plt.title('2021年各行業城鎮單位就業人員年平均工資', loc='center')# 取消 x 軸標簽的設置,注釋掉的代碼原本是打算設置 x 軸標簽為 "行業"
# plt.xlabel("行業")# 設置 y 軸的標簽為 "單位(元)"
plt.ylabel("單位(元)")# 在圖表中添加網格線,方便查看數據點的位置和數值
plt.grid()# 繪制一條水平參考線,y 的位置為所有行業 2021 年平均工資的平均值
# 這里假設數據有 19 個行業,linestyle=':' 表示參考線的樣式為虛線
plt.axhline(y=sum(yuan)/19, linestyle=':')# 設置 x 軸刻度標簽的屬性
# rotation=290 表示將刻度標簽逆時針旋轉 290 度,近似垂直顯示
# fontsize=10 表示將刻度標簽的字體大小設置為 10
# 注釋掉的 va='center' 原本是想讓標簽垂直居中
plt.xticks(rotation=290,fontsize=10,# va='center'
)# 調整子圖的布局,增加底部的邊距為 0.25,防止 x 軸標簽與圖表底部重疊
plt.subplots_adjust(bottom=0.25)# 使用 zip 函數將行業名稱和對應的 2021 年平均工資組合成元組
# 遍歷這些元組,在每個數據點的位置添加文本標簽
for a, b in zip(hy, yuan):# 在坐標 (a, b) 處添加文本標簽,標簽內容為該行業 2021 年平均工資,格式為 'X 元'# ha='right' 表示文本水平右對齊,va='bottom' 表示文本垂直底部對齊plt.text(a, b, '%d元' % b, ha='right', va='bottom')# 繪制折線圖,x 軸為行業名稱,y 軸為 2021 年各行業平均工資
# 'r-D' 表示線條顏色為紅色,樣式為虛線,數據點用菱形標記
plt.plot(hy, yuan, 'r-D')# 為圖表添加圖例,圖例中顯示 '平均值參考線' 和 '各行業的評價工資'(這里可能存在拼寫錯誤,應為 '各行業的平均工資')
# loc=1 表示圖例顯示在右上角,shadow=True 為圖例添加陰影效果,fancybox=True 為圖例添加圓角邊框
plt.legend(('平均值參考線', '各行業的評價工資'), loc=1, shadow=True, fancybox=True)# 將繪制好的圖表保存為名為 '2021年各行業城鎮單位就業人員年平均工資.png' 的圖片文件
plt.savefig('2021年各行業城鎮單位就業人員年平均工資.png')# 顯示繪制好的圖表
plt.show()
?