?最近有個項目需要做視覺自動化處理的工具,最后選用的軟件為python,剛好這個機會進行系統學習。短時間學習,需要快速開發,所以記錄要點步驟,防止忘記。
?鏈接:
開源 python 應用 開發(一)python、pip、pyAutogui、python opencv安裝-CSDN博客
開源 python 應用 開發(二)基于pyautogui、open cv 視覺識別的工具自動化-CSDN博客
開源 python 應用 開發(三)python語法介紹-CSDN博客
開源 python 應用 開發(四)python文件和系統綜合應用-CSDN博客
開源 python 應用 開發(五)python opencv之目標檢測-CSDN博客
開源 python 應用 開發(六)網絡爬蟲-CSDN博客
開源 python 應用 開發(七)數據可視化-CSDN博客
?推薦鏈接:
開源 Arkts 鴻蒙應用 開發(一)工程文件分析-CSDN博客
開源 Arkts 鴻蒙應用 開發(二)封裝庫.har制作和應用-CSDN博客
開源 Arkts 鴻蒙應用 開發(三)Arkts的介紹-CSDN博客
開源 Arkts 鴻蒙應用 開發(四)布局和常用控件-CSDN博客
開源 Arkts 鴻蒙應用 開發(五)控件組成和復雜控件-CSDN博客
?推薦鏈接:
開源 java android app 開發(一)開發環境的搭建-CSDN博客
開源 java android app 開發(二)工程文件結構-CSDN博客
開源 java android app 開發(三)GUI界面布局和常用組件-CSDN博客
開源 java android app 開發(四)GUI界面重要組件-CSDN博客
開源 java android app 開發(五)文件和數據庫存儲-CSDN博客
開源 java android app 開發(六)多媒體使用-CSDN博客
開源 java android app 開發(七)通訊之Tcp和Http-CSDN博客
開源 java android app 開發(八)通訊之Mqtt和Ble-CSDN博客
開源 java android app 開發(九)后臺之線程和服務-CSDN博客
開源 java android app 開發(十)廣播機制-CSDN博客
開源 java android app 開發(十一)調試、發布-CSDN博客
開源 java android app 開發(十二)封庫.aar-CSDN博客
推薦鏈接:
開源C# .net mvc 開發(一)WEB搭建_c#部署web程序-CSDN博客
開源 C# .net mvc 開發(二)網站快速搭建_c#網站開發-CSDN博客
開源 C# .net mvc 開發(三)WEB內外網訪問(VS發布、IIS配置網站、花生殼外網穿刺訪問)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客
開源 C# .net mvc 開發(四)工程結構、頁面提交以及顯示_c#工程結構-CSDN博客
開源 C# .net mvc 開發(五)常用代碼快速開發_c# mvc開發-CSDN博客
本章節內容如下:
一、基本圖形
1.1? 安裝matplotlib庫
使用vscode的終端或cmd進行安裝
pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/
1.2? 安裝成功效果
?
1.3? 正弦波顯示代碼
import matplotlib.pyplot as plt
import numpy as np#pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/
# 創建數據
x = np.linspace(0, 10, 100)
y = np.sin(x)# 創建圖形
plt.figure(figsize=(8, 6))# 繪制線圖
plt.plot(x, y, label='sin(x)', color='blue', linewidth=2)# 添加標題和標簽
plt.title('Sine Wave', fontsize=16)
plt.xlabel('X-axis', fontsize=14)
plt.ylabel('Y-axis', fontsize=14)# 添加圖例
plt.legend(fontsize=12)# 顯示網格
plt.grid(True, linestyle='--', alpha=0.7)# 顯示圖形
plt.show()
1.4? 正弦波顯示效果
?
1.5? 矩形代碼
import matplotlib.pyplot as plt
import matplotlib.patches as patches# 創建一個圖形和坐標軸
fig, ax = plt.subplots()# 創建一個長方形(Rectangle)
# 參數:(左下角x坐標, 左下角y坐標), 寬度, 高度
rectangle = patches.Rectangle((0.2, 0.3), 0.5, 0.4, linewidth=2, edgecolor='r', facecolor='blue', alpha=0.5)# 添加到坐標軸
ax.add_patch(rectangle)# 設置坐標軸范圍
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)# 顯示圖形
plt.title("Rectangle using matplotlib")
plt.show()
1.6? 矩形顯示效果
?
二、綜合銷售圖形
2.1? 安裝pandas 庫
pip install pandas -i https://mirrors.aliyun.com/pypi/simple/
?
2.2? 代碼
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np# 準備數據
data = {"月份": ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],"銷售額": [336, 389, 704, 469, 414, 464, 409, 483, 481, 525, 567, 465],"陽光硅片": [100, 110, 130, 114, 160, 176, 154, 131, 121, 231, 114, 231],"華測硅片": [113, 114, 231, 232, 123, 165, 132, 176, 198, 113, 321, 123],"TD測試": [123, 165, 343, 123, 131, 123, 123, 176, 162, 181, 132, 111]
}
df = pd.DataFrame(data)# 設置全局樣式
plt.style.use('ggplot')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 創建畫布和子圖(增大畫布尺寸并調整布局參數)
fig = plt.figure(figsize=(20, 16)) # 寬度增加到20,高度增加到16
fig.suptitle('2023年銷售數據分析報告', fontsize=18, y=1.02)# 調整子圖之間的間距參數
plt.subplots_adjust(wspace=0.3, hspace=0.4) # 增加水平和垂直間距# 子圖1:趨勢分析(折線圖)
ax1 = plt.subplot(2, 2, 1)
ax1.plot(df["月份"], df["銷售額"], marker="o", label="總銷售額", linewidth=2, color='#1f77b4')
ax1.plot(df["月份"], df["陽光硅片"], marker="s", label="陽光硅片", color='#ff7f0e')
ax1.plot(df["月份"], df["華測硅片"], marker="^", label="華測硅片", color='#2ca02c')
ax1.plot(df["月份"], df["TD測試"], marker="d", label="TD測試", color='#d62728')
ax1.set_title("1. 銷售額及品牌趨勢分析", pad=13, fontsize=14) # 增加標題間距和字體大小
#ax1.set_xlabel("月份", fontsize=12)
ax1.set_ylabel("銷售額(萬)", fontsize=12)
ax1.legend(fontsize=10)
ax1.grid(linestyle="--")# 子圖2:品牌占比(堆疊面積圖)
ax2 = plt.subplot(2, 2, 2)
ax2.stackplot(df["月份"], df["陽光硅片"], df["華測硅片"], df["TD測試"],labels=["陽光硅片", "華測硅片", "TD測試"],colors=["#FFA07A", "#98FB98", "#87CEFA"]
)
ax2.set_title("2. 品牌銷售額占比(堆疊視圖)", pad=13, fontsize=14)
#ax2.set_xlabel("月份", fontsize=12)
ax2.set_ylabel("銷售額(萬)", fontsize=12)
ax2.legend(loc="upper left", fontsize=10)# 子圖3:品牌對比(柱狀圖)
ax3 = plt.subplot(2, 2, 3)
width = 0.25
x = np.arange(len(df["月份"]))
ax3.bar(x - width, df["陽光硅片"], width, label="陽光硅片", color="#FFA07A")
ax3.bar(x, df["華測硅片"], width, label="華測硅片", color="#98FB98")
ax3.bar(x + width, df["TD測試"], width, label="TD測試", color="#87CEFA")
ax3.set_title("3. 各品牌月度銷售額對比", pad=13, fontsize=14)
ax3.set_ylabel("銷售額(萬)", fontsize=12)
ax3.set_xticks(x)
ax3.set_xticklabels(df["月份"], fontsize=10)
ax3.legend(fontsize=10)# 子圖4:相關性分析(熱力圖)
ax4 = plt.subplot(2, 2, 4)
corr = df[["銷售額", "陽光硅片", "華測硅片", "TD測試"]].corr()
im = ax4.imshow(corr, cmap="coolwarm", vmin=-1, vmax=1)
ax4.set_title("4. 銷售額與品牌的相關性", pad=13, fontsize=14)
ax4.set_xticks(np.arange(len(corr.columns)))
ax4.set_yticks(np.arange(len(corr.columns)))
ax4.set_xticklabels(corr.columns, fontsize=10)
ax4.set_yticklabels(corr.columns, fontsize=10)
cbar = plt.colorbar(im, ax=ax4)
cbar.ax.tick_params(labelsize=10) # 設置colorbar刻度字體大小# 添加相關系數文本(調整字體大小)
for i in range(len(corr.columns)):for j in range(len(corr.columns)):ax4.text(j, i, f"{corr.iloc[i, j]:.2f}", ha="center", va="center", color="black", fontsize=10)plt.tight_layout(pad=4.0) # 增加整體邊距
plt.show()
2.3? 顯示效果