Python繪圖庫及圖像類型

折線圖(plot)

繪圖庫介紹

Python中繪制折線圖的全面指南_python繪制折線圖-CSDN博客https://blog.csdn.net/2301_81064905/article/details/139689644

核心作用說明
趨勢分析揭示數據隨時間推移的上升/下降趨勢、周期性波動或轉折點
變化對比在單一圖表中對比多個變量(如不同產品銷量)的變化軌跡
異常檢測快速識別數據中的突變點(如系統故障、市場異動)
連續性表達強調數據在連續維度(時間、順序)上的演變過程
預測參考基于歷史趨勢推斷未來走向(需結合統計模型)
場景分類具體案例圖表特點
時間序列分析? 股票價格波動
? 月度銷售額變化
? 年度氣溫趨勢
X軸為時間單位
Y軸為連續數值
性能監控? 服務器CPU使用率
? 網站日活用戶數
? 應用程序響應延遲
常需實時更新
突出異常閾值
科學實驗? 化學試劑濃度變化
? 物理實驗測量值
? 生物種群數量追蹤
強調變量間關系
需誤差線輔助
商業決策? 不同渠道獲客成本對比
? 產品迭代的用戶留存率
? 營銷活動ROI趨勢
多線對比
標注關鍵節點
健康管理? 患者體溫監測
? 運動心率變化
? 血糖水平記錄
個人數據跟蹤
關聯事件標記

?基礎參數(Underlying Parameter)

plt.plot(x, y, fmt, **kwargs)
#或者
ax.plot(x, y, fmt, **kwargs)
參數描述示例
xX軸數據 (可迭代對象)[1, 2, 3, 4]
yY軸數據 (可迭代對象)[5, 3, 8, 2]
fmt格式字符串 (顏色-標記-線型)'ro--'?(紅色圓圈虛線)

顏色 (Color)

代碼顏色示例
'b'藍色'b'
'g'綠色'g'
'r'紅色'r'
'c'青色'c'
'm'品紅'm'
'y'黃色'y'
'k'黑色'k'
'w'白色'w'

?標記 (Marker)

代碼標記示例
'.''.'
'o'圓圈'o'
's'正方形's'
'D'菱形'D'
'^'上三角'^'
'v'下三角'v'
'+'加號'+'
'x'叉號'x'
'*'星號'*'

線型 (Linestyle)

代碼線型示例
'-'實線'-'
'--'虛線'--'
'-.'點劃線'.-'
':'點線':'

?如果想實現更加精細的控制可以用下述的參數。

線條控制(Line Control)

  • color?/?c: 線條顏色 (名稱或十六進制)

  • linestyle?/?ls: 線型樣式

  • linewidth?/?lw: 線寬 (浮點數)

  • alpha: 透明度 (0-1)

標記控制(Mark Control)

  • marker: 標記樣式

  • markersize?/?ms: 標記大小

  • markeredgecolor?/?mec: 標記邊緣顏色

  • markerfacecolor?/?mfc: 標記填充顏色

其他控制(Other Controls)

  • label: 圖例標簽

  • visible: 是否顯示 (True/False)

  • zorder: 繪圖順序 (數值越大越靠前)

特殊參數(Special Parameters)

  • data: 指定數據來源對象 (如DataFrame)

  • scalex,?scaley: 是否自動縮放坐標軸 (默認為True)

返回值(Returned Value)

plot()?函數返回一個包含?Line2D?對象的列表,每個對象代表繪制的一條線。這些對象可用于后續的圖形操作。

示例代碼

import matplotlib.pyplot as plt
import numpy as np# 設置中文顯示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False    # 用來正常顯示負號# 創建數據
months = ['1月', '2月', '3月', '4月', '5月', '6月','7月', '8月', '9月', '10月', '11月', '12月']
sales = [85, 70, 92, 88, 78, 95, 105, 112, 98, 120, 135, 150]# 創建圖表和坐標軸
fig, ax = plt.subplots(figsize=(12, 8))  # 增加高度以容納表格# 繪制折線圖
line, = ax.plot(months, sales, marker='o', linestyle='-', color='#1f77b4',linewidth=2, markersize=8, label='月銷售額')# 添加數據點標簽
for i, (m, s) in enumerate(zip(months, sales)):ax.annotate(f'{s}萬',  # 標簽文本xy=(i, s),  # 數據點位置xytext=(0, 10),  # 文本位置偏移量textcoords='offset points',ha='center',  # 水平居中fontsize=9,color='dimgray')# 添加最高點注解
max_index = sales.index(max(sales))
ax.annotate('年度最高銷售額',xy=(max_index, sales[max_index]),xytext=(max_index-1, sales[max_index]-20),arrowprops=dict(arrowstyle='->', color='red', connectionstyle="arc3"),fontsize=10,bbox=dict(boxstyle="round,pad=0.3", fc="white", ec="red", alpha=0.8),color='red')# 添加趨勢線(線性回歸)
x = np.arange(len(months))
fit = np.polyfit(x, sales, 1)
trend_line = np.polyval(fit, x)
ax.plot(months, trend_line, 'r--', label='銷售趨勢')# 添加標題和標簽
ax.set_title('2023年公司月度銷售額分析', fontsize=16, pad=20)
ax.set_xlabel('月份', fontsize=12, labelpad=10)
ax.set_ylabel('銷售額 (萬元)', fontsize=12, labelpad=10)# 設置網格線
ax.grid(True, linestyle='--', alpha=0.7)# 設置Y軸范圍
ax.set_ylim(60, 160)# 添加圖例
ax.legend(loc='upper left', frameon=True, shadow=True)# 修正后的數據表格 - 使用更合理的布局
# 準備表格數據
table_data = [['月份'] + months,['銷售額(萬)'] + [str(s) for s in sales]
]# 創建表格
table = plt.table(cellText=table_data,cellLoc='center',loc='bottom',bbox=[0, -0.25, 1, 0.15]  # 調整表格位置和大小
)# 設置表格樣式
table.auto_set_font_size(False)
table.set_fontsize(10)
table.scale(1, 1.5)  # 增加行高# 設置表頭樣式
for i in range(2):table[(0, i)].set_facecolor('#f0f0f0')table[(0, i)].set_text_props(weight='bold')# 設置最高值單元格樣式
table[(1, max_index+1)].set_facecolor('#ffdddd')
table[(1, max_index+1)].set_text_props(color='red', weight='bold')# 調整布局
plt.subplots_adjust(bottom=0.2)  # 為表格留出適當空間# 添加腳注
plt.figtext(0.5, 0.01, '數據來源: 公司財務部 | 制圖日期: 2023-12-31 | 單位: 萬元',ha='center', fontsize=9, color='gray')
# 保存圖表為圖片
plt.savefig('line_chart.png',dpi=300,bbox_inches='tight',facecolor='white',  # 設置背景色edgecolor='none'    # 去除邊框
)# 顯示圖表
plt.show()

散點圖(scatter)

繪圖庫介紹

建筑兔零基礎自學python記錄8|學畫散點圖/Scatter plot-CSDN博客https://blog.csdn.net/tzcnancy/article/details/145395941

核心作用說明
相關性分析直觀展示變量間的正相關/負相關/無相關關系
分布模式識別發現數據聚類、離群點或非線性模式
異常值檢測快速定位偏離主體分布的異常數據點
變量關系探索為回歸分析、聚類等建模提供前期洞察
多維數據映射通過顏色/大小添加第三、第四維度信息
場景分類具體案例圖表特點
科學研究? 身高與體重的關系
? 藥物劑量與療效關聯
? 基因表達相關性
常配合回歸線
使用顏色區分實驗組
商業分析? 廣告投入與銷售額
? 用戶年齡與消費金額
? 產品特性偏好
氣泡大小表示交易量
多組數據對比
金融風控? 收入與信用評分
? 交易頻率與金額
? 欺詐行為識別
突出異常點
劃分風險區域
工業制造? 溫度與產品良率
? 壓力與材料強度
? 設備參數優化
標注控制邊界
顯示誤差范圍
地理信息? 城市人口與GDP
? 氣候站溫濕度分布
? 疫情傳播熱點
結合地圖坐標
熱力圖疊加

?函數簽名(Function Signature)

plt.scatter(x, y,                     # 必需:點的坐標s=None,                   # 點的大小c=None,                   # 點的顏色marker=None,              # 點的形狀cmap=None,                # 顏色映射norm=None,                # 顏色歸一化vmin=None, vmax=None,     # 顏色范圍限制alpha=None,               # 透明度linewidths=None,          # 邊緣線寬edgecolors=None,          # 邊緣顏色plotnonfinite=False,      # 是否繪制非有限值data=None,                # 數據源**kwargs                  # 其他屬性
)

必需參數(Required Parameter)

參數類型說明
x, yarray-like點的 x 和 y 坐標數據(長度必須相同)

?主要可選參數(Main Selectable Parameters)

參數類型默認值說明
sscalar or arrayNone?(20)點的大小(以為單位,是面積的平方)
ccolor or arrayNone?('b')點的顏色(單一顏色或數值數組)
markerstr'o'點的形狀('o',?'s',?'^',?'D'?等)
alphascalarNone透明度(0-1,0完全透明)
linewidthsscalar or arrayNone?(1.5)點邊緣的線寬
edgecolorscolor or array'face'點邊緣的顏色('face'表示與填充色相同)

顏色映射參數(Color Mapping Parameters)

參數說明
cmap顏色映射對象或名稱(如?'viridis',?'jet',?'coolwarm'
norm歸一化對象(用于將數值映射到 [0,1] 區間)
vmin, vmax與?norm?結合使用,定義顏色映射的數據范圍

其他參數(Other Parameters)

參數說明
plotnonfinite是否繪制 NaN 或 inf 值(默認 False)
data數據源對象(可使用列名代替數據數組)
label用于圖例的標簽
zorder繪圖順序(數值越大越靠上)

示例代碼

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as fm
from scipy.stats import pearsonr# 在繪圖代碼前添加字體設置
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'SimHei', 'Arial']  # 優先使用支持符號的字體
plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示問題# ==================== 解決中文顯示問題 ====================
# 方法1:嘗試使用系統自帶的中文字體
try:# Windows 系統常用中文字體路徑font_path = 'C:/Windows/Fonts/simhei.ttf'  # 黑體# font_path = 'C:/Windows/Fonts/msyh.ttc'  # 微軟雅黑chinese_font = fm.FontProperties(fname=font_path)plt.rcParams['font.family'] = 'sans-serif'font_entry = fm.findfont(fm.FontProperties(fname=font_path))plt.rcParams['font.sans-serif'] = [fm.get_font(font_entry).family_name]use_custom_font = True
except:# 方法2:嘗試使用Matplotlib內置的中文支持plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'KaiTi', 'FangSong', 'STXihei', 'sans-serif']plt.rcParams['axes.unicode_minus'] = False  # 解決負號顯示問題use_custom_font = False# 方法3:如果上述方法都不行,使用英文標題
use_english = False  # 設為True則使用英文標題# ==================== 創建模擬數據 ====================
# 設置隨機種子確保結果可復現
np.random.seed(42)# 生成數據點數量
n = 150# 創建正相關數據
positive_x = np.random.randn(n) * 2
positive_y = positive_x * 1.5 + np.random.randn(n) * 1.5# 創建負相關數據
negative_x = np.random.randn(n) * 2 + 8
negative_y = negative_x * (-1.2) + np.random.randn(n) * 1.8 + 15# 創建無相關數據
random_x = np.random.randn(n) * 2 + 4
random_y = np.random.randn(n) * 3 + 8# 組合所有數據
all_x = np.concatenate([positive_x.ravel(), negative_x.ravel(), random_x.ravel()])
all_y = np.concatenate([positive_y.ravel(), negative_y.ravel(), random_y.ravel()])
categories = np.array(['正相關'] * n + ['負相關'] * n + ['無相關'] * n)
sizes = np.abs(np.random.randn(3 * n) * 30 + 20)  # 點的大小
colors = np.random.rand(3 * n)  # 點的顏色值# ==================== 創建散點圖 ====================
plt.figure(figsize=(14, 10))# 繪制不同類別的散點
for i, category in enumerate(['正相關', '負相關', '無相關']):idx = categories == categoryplt.scatter(all_x[idx], all_y[idx],s=sizes[idx],c=colors[idx],alpha=0.7,  # 透明度edgecolor='black',  # 點邊緣顏色linewidths=0.5,  # 點邊緣寬度label=category,  # 圖例標簽cmap='viridis')  # 顏色映射# ==================== 添加注解和裝飾 ====================# 添加標題和坐標軸標簽
if use_english or not use_custom_font:plt.title('Scatter Plot with Detailed Annotations', fontsize=18, pad=20)plt.xlabel('X Variable', fontsize=14)plt.ylabel('Y Variable', fontsize=14)
else:plt.title('帶詳細注解的散點圖示例', fontsize=18, pad=20)plt.xlabel('X 變量', fontsize=14)plt.ylabel('Y 變量', fontsize=14)# 添加網格線
plt.grid(True, linestyle='--', alpha=0.3)# 添加圖例
plt.legend(title='相關類型' if not use_english else 'Correlation Type',loc='upper right',frameon=True,shadow=True,fancybox=True)# 計算并顯示相關系數
corr_pos, _ = pearsonr(positive_x, positive_y)
corr_neg, _ = pearsonr(negative_x, negative_y)
corr_rand, _ = pearsonr(random_x, random_y)if use_english or not use_custom_font:plt.text(-7, 25, f'Positive Correlation: r = {corr_pos:.2f}',fontsize=12, bbox=dict(facecolor='white', alpha=0.8))plt.text(5, 25, f'Negative Correlation: r = {corr_neg:.2f}',fontsize=12, bbox=dict(facecolor='white', alpha=0.8))plt.text(0, -5, f'No Correlation: r = {corr_rand:.2f}',fontsize=12, bbox=dict(facecolor='white', alpha=0.8))# 添加解釋性文本plt.text(-7, 22, '? Points show clear upward trend\n? Strong positive relationship',fontsize=10, bbox=dict(facecolor='lightyellow', alpha=0.7))plt.text(5, 22, '? Points show clear downward trend\n? Strong negative relationship',fontsize=10, bbox=dict(facecolor='lightyellow', alpha=0.7))plt.text(0, -8, '? Points are randomly scattered\n? No discernible relationship',fontsize=10, bbox=dict(facecolor='lightyellow', alpha=0.7))
else:plt.text(-7, 25, f'正相關: r = {corr_pos:.2f}',fontsize=12, bbox=dict(facecolor='white', alpha=0.8))plt.text(5, 25, f'負相關: r = {corr_neg:.2f}',fontsize=12, bbox=dict(facecolor='white', alpha=0.8))plt.text(0, -5, f'無相關: r = {corr_rand:.2f}',fontsize=12, bbox=dict(facecolor='white', alpha=0.8))# 添加解釋性文本plt.text(-7, 22, '? 點呈現明顯上升趨勢\n? 強正相關關系',fontsize=10, bbox=dict(facecolor='lightyellow', alpha=0.7))plt.text(5, 22, '? 點呈現明顯下降趨勢\n? 強負相關關系',fontsize=10, bbox=dict(facecolor='lightyellow', alpha=0.7))plt.text(0, -8, '? 點隨機分布\n? 無明顯相關關系',fontsize=10, bbox=dict(facecolor='lightyellow', alpha=0.7))# 添加趨勢線
z_pos = np.polyfit(positive_x, positive_y, 1)
p_pos = np.poly1d(z_pos)
plt.plot(positive_x, p_pos(positive_x), "r--", linewidth=1.5)z_neg = np.polyfit(negative_x, negative_y, 1)
p_neg = np.poly1d(z_neg)
plt.plot(negative_x, p_neg(negative_x), "b--", linewidth=1.5)# 添加顏色條
scatter = plt.scatter([], [], c=[], cmap='viridis')  # 創建用于顏色條的空散點圖
cbar = plt.colorbar(scatter, shrink=0.8)
if use_english or not use_custom_font:cbar.set_label('Color Value', rotation=270, labelpad=15)
else:cbar.set_label('顏色值', rotation=270, labelpad=15)# 添加尺寸圖例(氣泡大小表示)
sizes_legend = [30, 60, 90]
for size in sizes_legend:plt.scatter([], [], s=size, c='gray', alpha=0.6, edgecolor='black',label=f'{size} px' if use_english or not use_custom_font else f'{size} 像素')
plt.legend(title='點尺寸' if not use_english else 'Point Size',loc='lower right',frameon=True,labelspacing=1.5,handletextpad=1.5)# 添加腳注
plt.figtext(0.5, 0.01,'數據來源: 模擬數據 | 制圖日期: 2023-10-15 | 點的大小和顏色代表額外維度信息'if not use_english and use_custom_fontelse 'Data Source: Simulated Data | Date: 2023-10-15 | Size and color represent additional dimensions',ha='center', fontsize=9, color='gray')# 調整布局
plt.tight_layout(pad=3.0)
plt.subplots_adjust(bottom=0.1)  # 為腳注留出空間# ==================== 保存和顯示圖表 ====================
plt.savefig('scatter_diagram.png', dpi=300, bbox_inches='tight')  # 保存高分辨率圖片
plt.show()

柱狀圖/條形圖(bar/barh)

繪圖庫介紹

Python可視化 --柱形圖_python 柱狀圖-CSDN博客https://blog.csdn.net/m0_73299799/article/details/136437184

最全Python繪制條形圖(柱狀圖)_數據分析-CSDN專欄https://download.csdn.net/blog/column/10599192/113642589

核心作用關鍵說明適用場景
類別比較清晰對比不同分類項目的數值差異產品銷量對比、部門績效評估
分布展示顯示離散數據的頻率分布情況用戶年齡分布、故障類型統計
趨勢分析展示數據隨時間變化的趨勢(離散時間點)月度銷售額、季度增長率
排名呈現直觀顯示項目的排序位置城市GDP排名、熱門商品排行
構成分析展示整體中各部分的組成關系收入來源構成、時間分配比例

函數簽名(Function Signature)

ax.bar(x,                # 條形的x坐標height,            # 條形的高度(y值)width=0.8,         # 條形的寬度(默認0.8)bottom=None,       # 條形的底部基準(用于堆疊圖)align='center',    # 條形對齊方式:'center' 或 'edge'**kwargs           # 其他樣式參數(顏色、邊框等)
)ax.barh(y, width, height=0.8, left=None, *, align='center', **kwargs
)

關鍵參數詳解

bar函數

參數類型說明
xfloat 或 array-like條形的中心位置(若?align='center')或左側邊緣(若?align='edge'
heightfloat 或 array-like條形的高度(y軸方向的值)
widthfloat 或 array-like條形的寬度(默認0.8)。值范圍建議?[0, 1],避免重疊
bottomfloat 或 array-like條形的起始高度(y軸基準),用于堆疊圖(默認從0開始)
align{'center', 'edge'}對齊方式:
-?'center':條形中心位于?x?坐標處
-?'edge':條形左側邊緣位于?x?坐標處

barh函數?

參數說明示例值
y條形在 y 軸的位置(類別)[0, 1, 2]
width條形的長度(數值)[30, 50, 20]
height條形的粗細(高度)0.5
left條形起始的 x 坐標(用于堆疊)[0, 30, 80]
align對齊方式'center'?或?'edge'
color條形顏色'skyblue',?['r','g','b']
edgecolor邊框顏色'black'
linewidth邊框寬度1.5
alpha透明度0.7
label圖例標簽'Sales'
xerr/yerr誤差線數組或標量

常用樣式參數 (**kwargs)?

bar函數

參數說明
color填充顏色(支持顏色名、十六進制碼、RGB元組)
例:color='skyblue'color=['r','g','b']
edgecolor邊框顏色(默認:'black'
linewidth邊框寬度(默認:1.0
alpha透明度(0透明 ~?1不透明)
label圖例標簽(用于ax.legend()
tick_label替換x軸刻度的標簽(長度需與x一致)
例:tick_label=['A','B','C']

返回值

返回一個?BarContainer?對象,包含所有條形(Rectangle?實例),可通過它進一步調整樣式。?

柱狀圖和條形圖對比

特征柱狀圖 (Column Chart)條形圖 (Bar Chart)
方向垂直 (↑)水平 (→)
坐標軸x軸=分類,y軸=數值y軸=分類,x軸=數值
最佳場景時間序列、少量類別長文本標簽、大量類別、排名
Matplotlib函數ax.bar()ax.barh()
閱讀順序從左到右從上到下
數據限制類別名過長時標簽會重疊處理長類別名更友好

示例代碼

import matplotlib.pyplot as plt
import numpy as np# 設置中文字體支持
plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False# 創建數據
categories = ['蘋果', '香蕉', '橙子', '葡萄', '芒果']
values_bar = [35, 28, 42, 25, 38]
values_barh = [120, 95, 150, 80, 130]
colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFBE0B', '#FB5607']# 創建畫布
fig = plt.figure(figsize=(14, 10), facecolor='#f8f9fa')
fig.suptitle('水果銷售數據分析', fontsize=20, fontweight='bold', color='#2a4d69')# 創建柱狀圖
ax1 = fig.add_subplot(2, 2, 1)
bars = ax1.bar(categories, values_bar, color=colors, edgecolor='white', linewidth=2, alpha=0.9)
ax1.set_title('水果銷售額柱狀圖', fontsize=14, pad=20, color='#2a4d69')
ax1.set_ylabel('銷售額 (萬元)', fontsize=12)
ax1.set_ylim(0, 50)
ax1.grid(axis='y', linestyle='--', alpha=0.7)# 添加數據標簽
for bar in bars:height = bar.get_height()ax1.annotate(f'{height}',xy=(bar.get_x() + bar.get_width() / 2, height),xytext=(0, 3),  # 3 points vertical offsettextcoords="offset points",ha='center', va='bottom',fontsize=10, fontweight='bold')# 添加箭頭注解
ax1.annotate('橙子銷量最高',xy=(2, 42),xytext=(3, 45),arrowprops=dict(arrowstyle='->', color='#2a4d69', lw=1.5, connectionstyle="arc3,rad=0.2"),fontsize=10, color='#2a4d69', bbox=dict(boxstyle="round,pad=0.3", fc='white', ec='#2a4d69', alpha=0.8))# 創建水平條形圖
ax2 = fig.add_subplot(2, 2, 2)
bars_h = ax2.barh(categories, values_barh, color=colors, edgecolor='white', linewidth=2, alpha=0.9)
ax2.set_title('水果銷量條形圖', fontsize=14, pad=20, color='#2a4d69')
ax2.set_xlabel('銷量 (噸)', fontsize=12)
ax2.set_xlim(0, 170)
ax2.grid(axis='x', linestyle='--', alpha=0.7)# 添加數據標簽
for bar in bars_h:width = bar.get_width()ax2.annotate(f'{width}',xy=(width, bar.get_y() + bar.get_height() / 2),xytext=(5, 0),  # 向右偏移5點textcoords="offset points",ha='left', va='center',fontsize=10, fontweight='bold')# 添加圓圈注解
ax2.annotate('芒果銷量突出',xy=(130, 4),xytext=(140, 3.5),arrowprops=dict(arrowstyle='->', color='#2a4d69', lw=1.5),fontsize=10, color='#2a4d69',bbox=dict(boxstyle="circle,pad=0.3", fc='#FB5607', ec='white', alpha=0.7))# 創建堆疊柱狀圖
ax3 = fig.add_subplot(2, 2, 3)
quarter = ['第一季度', '第二季度', '第三季度', '第四季度']
fruit_a = [20, 35, 30, 25]
fruit_b = [15, 25, 20, 30]
fruit_c = [10, 20, 25, 15]bottom = np.zeros(len(quarter))
fruits = [fruit_a, fruit_b, fruit_c]
fruit_names = ['蘋果', '香蕉', '橙子']for i, fruit in enumerate(fruits):bars = ax3.bar(quarter, fruit, bottom=bottom, color=colors[i],edgecolor='white', linewidth=1, alpha=0.9, label=fruit_names[i])bottom += fruit# 在每段上添加標簽for j, bar in enumerate(bars):height = bar.get_height()if height > 0:  # 僅當高度大于0時添加標簽ax3.annotate(f'{height}',xy=(bar.get_x() + bar.get_width() / 2, bar.get_y() + height / 2),ha='center', va='center',color='white', fontsize=9, fontweight='bold')ax3.set_title('季度水果銷量堆疊圖', fontsize=14, pad=20, color='#2a4d69')
ax3.set_ylabel('銷量 (噸)', fontsize=12)
ax3.legend(loc='upper right')
ax3.grid(axis='y', linestyle='--', alpha=0.7)# 添加區域注解
ax3.annotate('香蕉銷量顯著增長',xy=(1, 45),xytext=(0.5, 60),arrowprops=dict(arrowstyle='fancy', color='#4ECDC4', lw=1.5, connectionstyle="arc3,rad=0.3"),fontsize=10, color='#2a4d69',bbox=dict(boxstyle="round,pad=0.3", fc='#4ECDC4', ec='#2a4d69', alpha=0.3))# 創建分組條形圖
ax4 = fig.add_subplot(2, 2, 4)
x = np.arange(len(quarter))
width = 0.25# 創建分組數據
bars1 = ax4.bar(x - width, fruit_a, width, color=colors[0], label='蘋果', alpha=0.9)
bars2 = ax4.bar(x, fruit_b, width, color=colors[1], label='香蕉', alpha=0.9)
bars3 = ax4.bar(x + width, fruit_c, width, color=colors[2], label='橙子', alpha=0.9)ax4.set_title('季度水果銷量對比', fontsize=14, pad=15, color='#2a4d69')
ax4.set_xticks(x)
ax4.set_xticklabels(quarter)
ax4.legend()
ax4.grid(axis='y', linestyle='--', alpha=0.7)# 添加數據標簽
for bars in [bars1, bars2, bars3]:for bar in bars:height = bar.get_height()ax4.annotate(f'{height}',xy=(bar.get_x() + bar.get_width() / 2, height),xytext=(0, 3),textcoords="offset points",ha='center', va='bottom',fontsize=9)# 添加連接線注解
ax4.annotate('橙子銷量在第三季度最高',xy=(2.25, 25),xytext=(2.1, 40),arrowprops=dict(arrowstyle='->', color='#45B7D1', lw=1.5, connectionstyle="arc3,rad=0.3"),fontsize=10, color='#2a4d69',bbox=dict(boxstyle="round,pad=0.3", fc='#45B7D1', ec='#2a4d69', alpha=0.3))# 添加圖例說明
fig.text(0.5, 0.02, '數據來源: 2023年水果市場銷售報告 | 可視化: Matplotlib',ha='center', fontsize=10, color='#4b86b4', alpha=0.7)# 調整布局
plt.tight_layout(rect=(0, 0.03, 1, 0.95))  # 將方括號改為圓括號
plt.subplots_adjust(wspace=0.3, hspace=0.3)# 保存為圖片
plt.savefig('bar_Graph.png', dpi=300, bbox_inches='tight', facecolor=fig.get_facecolor())# 添加自定義水印
fig.text(0.5, 0.5, '可視化示例',fontsize=60, color='gray', alpha=0.1,ha='center', va='center', rotation=30)plt.show()

餅圖/環形圖(pie)

繪圖庫介紹

python畫圖|餅圖繪制教程_python畫餅圖-CSDN博客https://blog.csdn.net/weixin_44855046/article/details/141863459

核心作用關鍵說明優勢
比例可視化直觀顯示部分在整體中的占比一眼看懂構成關系
重點突出強調關鍵組成部分的主導地位聚焦核心要素
簡單對比快速比較2-5個部分的相對大小避免復雜數據處理
整體意識強化"100%"的整體概念自然傳達完整性

函數簽名(Function Signature)

ax.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True,wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False,*, normalize=True, data=None
)

核心參數詳解

參數類型說明默認值
x數組每個扇形的數值(自動歸一化計算百分比)必填
explode數組扇形偏移中心的距離(比例值,如?[0, 0.1, 0]None
labels列表每個扇形的標簽文本None
colors列表扇形顏色(支持顏色名或 HEX)當前色彩循環
autopct字符串/函數顯示百分比的格式(如?'%1.1f%%'None
pctdistance浮點數百分比文本離圓心的距離(半徑比例)0.6
labeldistance浮點數標簽文本離圓心的距離(半徑比例)1.1
startangle浮點數起始繪制角度(0 表示正東方向,逆時針旋轉)0
radius浮點數餅圖半徑1
wedgeprops字典扇形屬性(如邊緣顏色、線寬:{'edgecolor': 'black', 'linewidth': 2}None
textprops字典文本屬性(如字體大小、顏色:{'fontsize': 12, 'color': 'red'}None
rotatelabels布爾值是否旋轉標簽至對應扇形角度False
shadow布爾值是否添加陰影效果False

?返回值

返回三個對象組成的元組:

  1. wedges: 扇形對象列表(matplotlib.patches.Wedge

  2. texts: 標簽文本對象列表(Text

  3. autotexts: 百分比文本對象列表(若?autopct=None?則為空列表)

餅圖和環形圖對比

特性餅狀圖環形圖嵌套環形圖
結構實心圓空心圓多層同心空心圓
中心區域無特殊用途可放置匯總數據通常留空
數據維度單層數據單層數據多層數據
比例表示扇形面積弧長弧長
Matplotlib參數默認wedgeprops={'width':x}pie()調用+不同radius
視覺重心整體比例部分與整體關系跨數據集比較

示例代碼

import matplotlib.pyplot as plt# 設置中文字體支持
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 創建1行3列的子圖布局,調整寬度比例
fig, axes = plt.subplots(1, 3, figsize=(20, 7),gridspec_kw={'width_ratios': [1, 1, 1.2]})  # 增加第三個子圖寬度# -------------------- 第一個子圖:基礎餅圖 --------------------
ax1 = axes[0]
labels1 = ['蘋果', '香蕉', '橙子', '葡萄']
sizes1 = [30, 25, 20, 25]
colors1 = ['#FF9999', '#66B3FF', '#99FF99', '#FFCC99']
explode = (0.05, 0, 0, 0)wedges1, texts1, autotexts1 = ax1.pie(sizes1,explode=explode,labels=labels1,colors=colors1,autopct='%1.1f%%',startangle=90,shadow=True,textprops={'fontsize': 10}
)for autotext in autotexts1:autotext.set_color('white')autotext.set_fontweight('bold')ax1.set_title('基礎餅圖', fontsize=14, pad=15)
ax1.axis('equal')# -------------------- 第二個子圖:環形圖 --------------------
ax2 = axes[1]
labels2 = ['蘋果', '香蕉', '橙子', '葡萄', '其他']
sizes2 = [25, 30, 15, 20, 10]
colors2 = ['#FF6B6B', '#4ECDC4', '#FFE66D', '#6A0572', '#1A535C']wedges2, texts2, autotexts2 = ax2.pie(sizes2,colors=colors2,startangle=90,wedgeprops=dict(width=0.4, edgecolor='w'),autopct=lambda p: f'{p:.1f}%' if p > 5 else '',pctdistance=0.85
)centre_circle = plt.Circle((0,0), 0.3, fc='white')
ax2.add_artist(centre_circle)
ax2.text(0, 0, '水果總銷量', ha='center', va='center', fontsize=12)ax2.set_title('環形圖', fontsize=14, pad=15)
ax2.axis('equal')# -------------------- 第三個子圖:嵌套環形圖 --------------------
ax3 = axes[2]# 數據
inner_labels = ['蘋果', '香蕉', '其他']
inner_sizes = [40, 35, 25]
outer_labels = ['紅富士', '青蘋果', '進口蕉', '本地蕉', '橙子', '葡萄', '草莓']
outer_sizes = [15, 25, 20, 15, 10, 10, 5]# 顏色
inner_colors = ['#FF6B6B','#4ECDC4','#1A535C']
outer_colors = ['#FF9999', '#FF6B6B', '#88D8C0', '#4ECDC4', '#FFE66D', '#6A0572', '#1A535C']# 繪制外環(縮小尺寸)
wedges_outer, _, autotexts_outer = ax3.pie(outer_sizes,radius=1.0,  # 縮小半徑colors=outer_colors,wedgeprops=dict(width=0.3, edgecolor='w'),  # 減小環寬startangle=90,pctdistance=0.85,autopct=lambda p: f'{p:.1f}%' if p > 4 else ''
)# 繪制內環
wedges_inner, _, autotexts_inner = ax3.pie(inner_sizes,radius=1.0 - 0.3,  # 相應縮小內環半徑colors=inner_colors,wedgeprops=dict(width=0.3, edgecolor='w'),startangle=90,pctdistance=0.75,autopct='%1.1f%%'
)# 添加中心文字
ax3.text(0, 0, '水果分類', ha='center', va='center', fontsize=12, weight='bold')# 優化圖例:放在下方并分兩列顯示
legend = ax3.legend(wedges_outer + wedges_inner,outer_labels + inner_labels,title="水果種類",loc='upper center',bbox_to_anchor=(-0.68, 0),  # 放在下方ncol=3,  # 分三列顯示fontsize=9
)
legend.get_title().set_fontsize(10)  # 圖例標題字號ax3.set_title('嵌套環形圖', fontsize=14, pad=15)
ax3.axis('equal')# -------------------- 整體設置和保存 --------------------
plt.suptitle('水果銷售數據可視化分析', fontsize=18, weight='bold')# 調整子圖間距和整體布局
plt.tight_layout()
plt.subplots_adjust(top=0.85, bottom=0.2, wspace=0.3)  # 增加底部空間和子圖間距# 保存圖像(提高DPI)
plt.savefig('pie_charts_comparison.png', dpi=300, bbox_inches='tight')
plt.savefig('pie_charts_comparison.pdf', bbox_inches='tight')  # PDF格式更清晰print("圖像已保存為 'pie_charts_comparison.png' 和 'pie_charts_comparison.pdf'")# 顯示圖像
plt.show()

直方圖(hist)

繪圖庫介紹

Python繪圖-5直方圖_python繪制直方圖-CSDN博客https://blog.csdn.net/2202_75971130/article/details/135192791

作用說明
1. 展示數據分布揭示數據集中在哪些區間、分散程度如何(如單峰、雙峰、左偏/右偏)。
2. 識別中心趨勢通過最高柱子的位置快速定位數據密集區(眾數所在區間)。
3. 分析離散程度柱子寬度和分散情況反映數據波動范圍(越分散說明數據差異越大)。
4. 檢測異常值遠離主分布區的孤立柱子可能暗示異常值。
5. 判斷分布形狀對稱(正態分布)、左偏(數據集中在右側)、右偏(數據集中在左側)、多峰等。
6. 比較不同數據集疊加多個直方圖可對比不同群體的分布差異(如A/B測試結果)。

函數簽名(Function Signature)

n, bins, patches = ax.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs
)

核心參數詳解?

參數默認值類型說明常用值/示例
x必填數組輸入數據[1, 2, 3, 4, 5]
bins'auto'int/序列/str分箱數量或邊界10(分10箱)
[0,5,10,20](自定義邊界)
'sturges'(自動計算)
rangeNone元組數據范圍限制(0, 100)(僅統計0-100)
densityFalsebool歸一化處理True(面積=1的概率密度)
weightsNone數組數據點權重[0.1, 0.2, 0.3, ...]
cumulativeFalsebool/int累積分布True(正向累積)
-1(反向累積)
bottomNone標量/數組基線位置10(所有柱子從y=10開始)
histtype'bar'str直方圖類型'bar'(傳統柱狀)
'step'(線框)
'stepfilled'(填充線框)
align'mid'str柱子對齊方式'mid'(居中)
'left'(左對齊)
'right'(右對齊)
orientation'vertical'str方向'vertical'(垂直)
'horizontal'(水平)
rwidthNonefloat柱子相對寬度0.8(占bin寬80%)
logFalsebool對數坐標True(y軸對數化)
colorNonestr/列表顏色'skyblue'
['r','g','b']
labelNonestr圖例標簽'Male'
stackedFalsebool堆疊顯示True(多組數據堆疊)
alpha1.0float透明度0.7(半透明效果)

?返回值

  • n: 數組,每個 bin 的頻數(或密度值)。

  • bins: 數組,bin 的邊界值(長度為?len(n)+1)。

  • patches: 直方圖矩形對象列表(用于自定義樣式)。

直方圖和柱狀圖對比?

特征直方圖 (Histogram)柱狀圖 (Bar Chart)
數據性質連續數值數據分類數據(或離散數值)
X軸含義數值區間(Bin)類別標簽(如國家、產品)
柱子間距無間距(表示連續區間)有間距(強調獨立性)
柱子寬度可不等寬(由數據分布決定)通常等寬
排序按數值大小自動排序任意排序(可按需調整)
統計目標展示數據分布/頻率比較各類別數量大小
數學基礎概率密度估計分類計數
空值處理空區間高度=0(必須顯示所有區間)缺失類別可省略
坐標軸僅數值軸一軸數值,另一軸分類
示例場景年齡分布、考試成績分布各國GDP對比、月度銷售額

?經驗法則

  1. 當X軸是數值范圍且需看分布形狀?→ 直方圖

  2. 當X軸是類別標簽且需比較大小?→ 柱狀圖

  3. 當數據量<10時優先用柱狀圖,>30時優先用直方圖

?示例代碼

import numpy as np
import matplotlib.pyplot as plt# 設置中文字體支持(如果需要顯示中文)
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'Microsoft YaHei', 'WenQuanYi Zen Hei', 'sans-serif']
plt.rcParams['axes.unicode_minus'] = False# 生成示例數據(模擬學生考試成績)
np.random.seed(42)
math_scores = np.random.normal(loc=75, scale=12, size=200)  # 數學成績
physics_scores = np.random.normal(loc=68, scale=15, size=200)  # 物理成績# 創建圖表和坐標軸
fig, ax = plt.subplots(figsize=(12, 8))# 繪制雙直方圖(比較兩科成績)
n1, bins1, patches1 = ax.hist(math_scores, bins=12, color='skyblue', alpha=0.7,edgecolor='navy', label='數學成績')
n2, bins2, patches2 = ax.hist(physics_scores, bins=12, color='salmon', alpha=0.7,edgecolor='darkred', label='物理成績')# 添加標題和標簽
ax.set_title('數學與物理成績分布對比', fontsize=16, pad=20)
ax.set_xlabel('考試分數', fontsize=14)
ax.set_ylabel('學生人數', fontsize=14)# 添加網格線
ax.grid(axis='y', linestyle='--', alpha=0.6)# 添加圖例
ax.legend(fontsize=12)# 添加柱子頂部的頻數注解
def add_count_annotations(patches, counts, bins, offset=3):for i, patch in enumerate(patches):bin_center = (bins[i] + bins[i+1]) / 2height = counts[i]if height > 0:  # 只標注有值的柱子ax.annotate(f'{int(height)}',xy=(bin_center, height),xytext=(0, offset),textcoords='offset points',ha='center',va='bottom',fontsize=10)add_count_annotations(patches1, n1, bins1)
add_count_annotations(patches2, n2, bins2, offset=5)  # 物理成績的注解稍高# 添加統計信息注解
math_mean = np.mean(math_scores)
physics_mean = np.mean(physics_scores)
ax.axvline(math_mean, color='blue', linestyle='--', linewidth=2)
ax.axvline(physics_mean, color='red', linestyle='--', linewidth=2)ax.annotate(f'數學平均分: {math_mean:.1f}',xy=(math_mean, np.max(n1)*0.8),xytext=(math_mean - 15, np.max(n1)*0.8 + 6),arrowprops=dict(arrowstyle='->', color='blue', connectionstyle="arc3"),fontsize=12, color='blue', weight='bold')ax.annotate(f'物理平均分: {physics_mean:.1f}',xy=(physics_mean, np.max(n2)*0.7),xytext=(physics_mean + 5.8, np.max(n2)*0.7 + 5),arrowprops=dict(arrowstyle='->', color='red'),fontsize=12, color='red', weight='bold')# 添加差異說明注解
ax.annotate('數學成績整體高于物理成績\n且分布更為集中',xy=(80, 25),xytext=(90, 30),arrowprops=dict(arrowstyle='fancy', color='green', connectionstyle="angle3,angleA=0,angleB=90"),fontsize=12, color='green', bbox=dict(boxstyle="round,pad=0.3", fc='lightyellow', ec='olive', alpha=0.8))# 保存高分辨率圖片
plt.tight_layout()
plt.savefig('histogram_with_annotations.png', dpi=300, bbox_inches='tight')
plt.savefig('histogram_with_annotations.pdf', bbox_inches='tight')  # 矢量圖版本print("圖片已保存為 'histogram_with_annotations.png' 和 'histogram_with_annotations.pdf'")# 顯示圖表
plt.show()

箱線圖(boxplot)

繪圖庫介紹

Python繪圖-7箱圖_python 箱線圖-CSDN博客https://blog.csdn.net/2202_75971130/article/details/136337160

作用說明
1. 展示數據分布用5個統計量(最小值、Q1、中位數、Q3、最大值)概括數據分布位置和范圍。
2. 識別異常值超出上下須(1.5×IQR范圍)的點被單獨標記,快速定位異常值。
3. 分析偏態與對稱性中位數在箱體的位置反映數據偏斜方向(左偏/右偏)。
4. 比較多組數據并排箱線圖可高效對比多組數據的分布差異(如不同類別/時間)。
5. 檢測數據離散度箱體長度(IQR)和須的長度反映數據波動范圍(IQR越小,數據越集中)。

函數簽名(Function Signature)

plt.boxplot(x,notch=None,sym=None,vert=None,whis=None,positions=None,widths=None,patch_artist=None,bootstrap=None,usermedians=None,conf_intervals=None,meanline=None,showmeans=None,showcaps=None,showbox=None,showfliers=None,boxprops=None,labels=None,flierprops=None,medianprops=None,meanprops=None,capprops=None,whiskerprops=None,manage_ticks=True,autorange=False,zorder=None
)

?核心參數詳解表

參數類型默認值說明示例
xArray/Sequence(必填)輸入數據(一維數組或數組序列)x=[data1, data2]
notchboolFalse是否繪制缺口箱線圖(展示中位數置信區間)notch=True
symstr'b+'離群點標記樣式sym='rs'(紅色方塊)
vertboolTrue箱線圖方向(True=垂直,False=水平)vert=False
whisfloat1.5定義須線長度的IQR倍數whis=2.0
positionsarray-like[1,2..n]箱線圖的定位坐標positions=[1,3,5]
widthsfloat/array0.5箱體寬度(標量或每個箱體寬度數組)widths=0.3
patch_artistboolFalse是否用顏色填充箱體patch_artist=True
labelslist/strNone分組標簽labels=['A','B']
showmeansboolFalse是否顯示均值標記showmeans=True
meanlineboolFalse是否用線(而非點)表示均值meanline=True
showcapsboolTrue是否顯示須線末端橫杠showcaps=False
showboxbool`True``是否顯示箱體showbox=False
showfliersboolTrue是否顯示離群值showfliers=False
boxpropsdictNone箱體樣式屬性boxprops=dict(facecolor='red')
whiskerpropsdictNone須線樣式屬性whiskerprops=dict(linestyle='--')
cappropsdictNone須線末端橫杠樣式屬性capprops=dict(linewidth=2)
medianpropsdictNone中位數線樣式屬性medianprops=dict(color='gold')
meanpropsdictNone均值標記樣式屬性meanprops=dict(marker='D')
flierpropsdictNone離群點樣式屬性flierprops=dict(marker='x')
zorderfloatNone繪圖層級(控制疊放順序)zorder=10

示例代碼

import matplotlib.pyplot as plt
import numpy as np
import os# 設置中文顯示
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'Microsoft YaHei', 'sans-serif']
plt.rcParams['axes.unicode_minus'] = False# 創建輸出目錄
output_dir = 'output'
os.makedirs(output_dir, exist_ok=True)# 生成更真實的示例數據(模擬產品測試分數)
np.random.seed(42)
product_A = np.random.normal(85, 12, 200)
product_B = np.random.normal(92, 8, 200)
product_C = np.random.normal(78, 15, 200)
product_D = np.random.normal(88, 10, 200)
data = [product_A, product_B, product_C, product_D]# 創建圖形和子圖
plt.figure(figsize=(12, 8))
ax = plt.subplot(111)# 繪制箱線圖
box = plt.boxplot(data,patch_artist=True,showmeans=True,  # 顯示均值點meanprops={'marker': 'D', 'markerfacecolor': 'gold', 'markeredgecolor': 'black'},labels=['產品A', '產品B', '產品C', '產品D'])# 設置箱體顏色
colors = ['#FF9999', '#66B2FF', '#99FF99', '#FFCC99']
for patch, color in zip(box['boxes'], colors):patch.set_facecolor(color)patch.set_alpha(0.8)  # 添加透明度# 設置箱線樣式
for element in ['whiskers', 'caps', 'medians']:plt.setp(box[element], color='black', linewidth=1.5)# 添加注釋
for i, d in enumerate(data):# 計算關鍵統計量median = np.median(d)q1 = np.percentile(d, 25)q3 = np.percentile(d, 75)iqr = q3 - q1mean = np.mean(d)upper_bound = q3 + 1.5 * iqrlower_bound = q1 - 1.5 * iqr# 標注中位數plt.annotate(f'中位數: {median:.1f}',xy=(i + 1, median),xytext=(i + 1.2, median + 3),fontsize=10,arrowprops=dict(arrowstyle="->", color='black', alpha=0.7))# 標注平均值plt.annotate(f'平均值: {mean:.1f}',xy=(i + 1, mean),xytext=(i + 1.2, mean - 5),fontsize=9,color='darkblue',arrowprops=dict(arrowstyle="->", color='darkblue', alpha=0.5))# 標注IQR范圍plt.text(i + 1.1, (q1 + q3) / 2, f'IQR: {iqr:.1f}',fontsize=9, color='darkgreen',verticalalignment='center')# 添加整體標題和說明
plt.title('四種產品質量測試分數分布對比', fontsize=16, pad=20, fontweight='bold')
plt.xlabel('產品型號', fontsize=12, labelpad=10)
plt.ylabel('測試分數', fontsize=12, labelpad=10)# 添加網格線
plt.grid(axis='y', linestyle='--', alpha=0.5)# 添加圖例
from matplotlib.patches import Patchlegend_elements = [Patch(facecolor=colors[0], label='產品A'),Patch(facecolor=colors[1], label='產品B'),Patch(facecolor=colors[2], label='產品C'),Patch(facecolor=colors[3], label='產品D'),plt.Line2D([0], [0], marker='D', color='w', markerfacecolor='gold', markersize=10, label='平均值'),plt.Line2D([0], [0], color='black', lw=2, label='中位數')
]
ax.legend(handles=legend_elements, loc='upper right', fontsize=10)# 添加數據來源說明
plt.figtext(0.5, 0.01, '數據來源: 2023年產品質量測試報告 | 注: 箱線圖基于200個樣本數據',ha='center', fontsize=9, color='gray')# 調整布局
plt.tight_layout()
plt.subplots_adjust(bottom=0.1)  # 為底部文本留出空間# 保存圖片到文件 (多種格式)
png_path = os.path.join(output_dir, 'boxplot_with_annotations.png')
pdf_path = os.path.join(output_dir, 'boxplot_with_annotations.pdf')
svg_path = os.path.join(output_dir, 'boxplot_with_annotations.svg')# 保存為PNG (適合網頁使用)
plt.savefig(png_path, dpi=300, bbox_inches='tight')
# 保存為PDF (適合印刷和高質量打印)
plt.savefig(pdf_path, format='pdf', bbox_inches='tight')
# 保存為SVG (矢量格式,可編輯)
plt.savefig(svg_path, format='svg', bbox_inches='tight')print(f"圖表已保存至: {png_path}")
print(f"圖表已保存至: {pdf_path}")
print(f"圖表已保存至: {svg_path}")# 顯示圖形
plt.show()

熱力圖(heatmap)

繪圖庫介紹

用 Python 繪制熱力圖(Heatmap)詳解:從數據到可視化全流程(第三天)_python heatmap-CSDN博客https://blog.csdn.net/2401_84301183/article/details/146536553

類別具體作用/場景說明/示例
核心作用直觀展示數據密度/強度分布用顏色深淺(暖色表高值,冷色表低值)快速揭示數據集中高低值區域及分布模式。
揭示模式、趨勢和異常識別熱點(高值聚集)、冷點(低值聚集)、梯度變化、異常值。
高效比較多變量/類別間關系矩陣熱力圖中通過顏色比較行、列代表的類別/變量間關系強度(如相關性、頻率)。
簡化高維數據表達將二維(如坐標+值)或三維(如行類+列類+值)數據壓縮到平面視圖,用顏色編碼。
空間效率高在有限空間內展示大量數據點或關系對比,優于重疊散點圖或多條形圖。
主要實現場景地理空間數據分析 (Geospatial)應用領域:?人口、犯罪、交通、房產、疾病、天氣、商業選址等。
示例:?人口密度圖、交通擁堵熱圖、疫情分布圖、商場客流量熱圖。
網站和用戶行為分析 (Web & UX)應用領域:?網頁/App設計優化、用戶體驗研究。
示例:?點擊熱圖(分析按鈕點擊)、滾動熱圖(分析頁面瀏覽深度)、鼠標移動熱圖(分析瀏覽路徑)、眼動追蹤熱圖(分析視覺焦點)。
數據分析和統計學 (Data Analysis & Statistics)應用領域:?探索性數據分析、模型評估、關系挖掘。
示例:?相關性矩陣(展示變量間相關系數)、混淆矩陣(評估分類模型性能)、缺失值模式熱圖、聚類結果熱圖(展示基因表達模式等)。

函數簽名(Function Signature)

sns.heatmap(data,                   # 必需參數:二維數據(數組、DataFrame)vmin=None,              # 顏色映射最小值vmax=None,              # 顏色映射最大值cmap=None,              # 顏色方案(如 'viridis', 'coolwarm', 'RdBu_r')center=None,            # 顏色中心值(常用于有正負的數據)robust=False,           # 抗異常值縮放(使用分位數替代極值)annot=None,             # 是否在格子中顯示數值(True/False 或 同shape數組)fmt='.2g',             # 數值格式(如 '.1f' 保留1位小數)annot_kws=None,         # 注釋文本樣式(字典,如 {'size':10})linewidths=0,           # 格子邊框寬度linecolor='white',      # 邊框顏色cbar=True,              # 是否顯示顏色條cbar_kws=None,          # 顏色條設置(字典,如 {'label':'Score'})square=False,           # 是否強制為正方形xticklabels='auto',     # X軸標簽(True/False/列表/'auto')yticklabels='auto',     # Y軸標簽(同上)mask=None,              # 遮蓋部分數據(True位置不顯示)ax=None,                # 指定繪圖的Axes對象**kwargs                # 其他matplotlib參數
)

核心參數詳解表

參數默認值數據類型說明
data-2D array/DataFrame必需參數,輸入矩陣數據
vminNonefloat顏色映射最小值
vmaxNonefloat顏色映射最大值
cmapNonestr/Colormap顏色映射方案(如 'viridis', 'coolwarm', 'RdBu_r')
centerNonefloat顏色中心值(用于有正負值的數據)
annotNonebool/array是否在格子中顯示數值(True 或同形數組)
fmt'.2g'str數值格式(如 '.2f'=兩位小數,'d'=整數)
linewidths0float格子邊框寬度(0=無邊框)
linecolor'white'str邊框顏色
cbarTruebool是否顯示顏色條
cbar_kwsNonedict顏色條參數(如 {'label': 'Score'})
squareFalsebool是否強制為正方形
xticklabels'auto'bool/list/'auto'X軸標簽控制(True=顯示,False=隱藏)
yticklabels'auto'bool/list/'auto'Y軸標簽控制
maskNonebool array遮蓋部分數據(True位置留白)
robustFalsebool是否使用分位數抗異常值
annot_kwsNonedict注釋文本樣式(如 {'size':10, 'color':'black'})
axNonematplotlib Axes指定繪圖的坐標軸

示例代碼

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.colors import LinearSegmentedColormap# 設置中文支持(如果需要)
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', 'Microsoft YaHei', 'sans-serif']
plt.rcParams['axes.unicode_minus'] = False# 創建示例數據
def generate_sample_data():# 創建日期范圍dates = pd.date_range(start='2023-01-01', end='2023-01-15')# 創建時間范圍times = [f"{hour:02d}:00" for hour in range(8, 18)]# 創建隨機數據np.random.seed(42)data = np.random.rand(len(dates), len(times)) * 100# 添加一些模式使數據更有趣for i in range(len(dates)):# 周末模式if dates[i].weekday() >= 5:  # 周六和周日data[i, :] *= 0.7  # 周末值較低# 中午高峰模式data[i, 4:7] *= 1.5  # 中午12點到下午2點# 創建DataFramedf = pd.DataFrame(data, index=dates.strftime('%Y-%m-%d'), columns=times)return df# 創建自定義顏色映射
def create_custom_colormap():colors = ["#2a9d8f", "#e9c46a", "#f4a261", "#e76f51"]return LinearSegmentedColormap.from_list("custom_cmap", colors)# 繪制熱力圖并添加注解
def plot_heatmap_with_annotations(df):# 創建圖形plt.figure(figsize=(14, 10))# 創建自定義顏色映射custom_cmap = create_custom_colormap()# 繪制熱力圖ax = sns.heatmap(df,cmap=custom_cmap,annot=True,  # 顯示數值注解fmt=".1f",  # 數值格式(保留一位小數)annot_kws={"size": 9, "color": "black"},  # 注解文本樣式linewidths=0.5,  # 單元格之間的線條寬度linecolor="white",  # 線條顏色cbar_kws={"label": "活動強度", "shrink": 0.8}  # 顏色條設置)# 設置標題和標簽plt.title("每日活動強度熱力圖 (2023年1月1日-15日)", fontsize=16, pad=20)plt.xlabel("時間", fontsize=12)plt.ylabel("日期", fontsize=12)# 旋轉x軸標簽plt.xticks(rotation=45, ha='right')# 添加網格線(在熱力圖后面)ax.set_facecolor('#f0f0f0')ax.grid(which='major', axis='both', linestyle='-', color='white', linewidth=0.5)# 調整布局plt.tight_layout()# 保存圖表save_path = "heatmap_with_annotations.png"plt.savefig(save_path, dpi=300, bbox_inches='tight')# 顯示圖表plt.show()return save_path# 主程序
if __name__ == "__main__":# 生成示例數據data_df = generate_sample_data()print("生成的熱力圖數據示例:")print(data_df.head())# 繪制并保存熱力圖saved_path = plot_heatmap_with_annotations(data_df)print(f"\n熱力圖已保存至: {saved_path}")

小提琴圖(violinplot)

繪圖庫介紹

用python繪制小提琴圖的基本流程及其操作_python 小提琴圖-CSDN博客https://blog.csdn.net/weixin_70682362/article/details/148018533

作用類別核心作用描述典型實現場景對比優勢
分布形態可視化直觀展示連續數據的整體分布形狀、概率密度(哪里密集、哪里稀疏)1. 觀察單個變量的數據分布特征(單峰、雙峰、多峰、對稱、偏態)。
2. 數據探索階段了解數據的基本形態。
優于箱線圖:清晰揭示分布形狀(如多峰性、不對稱性),箱線圖僅顯示摘要統計。
集中趨勢比較顯示數據分布的中心位置(通常結合箱線圖元素顯示中位數/四分位數)1. 比較不同類別/分組數據的中心趨勢(如中位數)差異。
2. 觀察不同實驗條件下結果的中心位置變化。
結合密度與統計量:既看密度集中區域,也看具體中位數位置。
離散程度比較通過“小提琴”的寬度變化展示數據分布的離散程度(寬=分散,窄=集中)1. 比較不同類別/分組數據的變異性或一致性(如評估不同生產工藝的穩定性)。
2. 識別方差差異顯著的組別。
優于箱線圖:寬度變化直觀體現數據點在整個值域上的疏密程度,而不僅是IQR。
分布對稱性/偏度分析通過形狀的對稱性判斷數據分布是左偏(負偏)、右偏(正偏)還是對稱1. 分析數據是否符合對稱分布假設(如某些統計檢驗前提)。
2. 識別收入、響應時間等常見偏態數據的偏斜方向。
優于直方圖/密度圖:在多組比較時,并排小提琴圖更易對比不同組的偏斜情況。
多組分布對比將多個組/類別的分布并排或疊加顯示,便于直接比較其形態、中心和離散度差異1. 比較不同產品/型號的性能指標分布。
2. 分析不同營銷策略下客戶購買金額的分布差異。
3. 評估不同治療方法下患者康復時間的分布。
4. 對比不同地區的氣溫分布模式。
5. 分析不同用戶群(如新/老用戶)使用時長/消費頻率的分布。
核心優勢最擅長同時比較多個組的完整分布特征,信息量遠大于僅比較均值或中位數。
異常值檢測 (輔助)結合箱線圖元素(通常內嵌),可識別潛在的異常值點1. 在觀察整體分布的同時,輔助查看是否存在顯著偏離主體的極端值。結合優勢:密度形態提供上下文,箱線圖元素標記異常點。
數據清洗/驗證揭示數據分布中意想不到的模式或問題(如雙峰可能暗示數據混合了不同群體)1. 數據質量檢查:發現分布異常(如預期單峰卻出現雙峰,可能需檢查數據來源或分組)。
2. 識別數據子群或潛在分段。
揭示隱藏信息:能提示數據背后可能存在的未考慮因素或分組。

函數簽名(Function Signature)

seaborn.violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100,width=0.8, inner='box', split=False, dodge=True, orient=None,linewidth=None, color=None, palette=None, saturation=0.75,ax=None, **kwargs
)

核心參數詳解表

參數類型默認值說明
x字符串/數組NoneX軸變量(分類數據)
y字符串/數組NoneY軸變量(數值數據)
hue字符串None分組變量(次級分類維度)
dataDataFrameNone數據源(需配合x/y/hue使用)
order列表None指定x變量順序(如['Mon','Tue','Wed'])
hue_order列表None指定hue分組順序(如['Male','Female'])
bw字符串/浮點數'scott'核密度估計帶寬:
'scott'/'silverman'(自動計算)
數值(值越小越貼合數據)
scale字符串'area'小提琴寬度縮放方式:
'area'(面積相同)
'count'(寬度與樣本量成正比)
'width'(最大寬度相同)
inner字符串'box'內部顯示元素:
'box'(微型箱線圖)
'quartiles'(四分位線)
'point'/'stick'(點/線)
None(不顯示)
split布爾值False當使用hue時:
True(左右對稱合并)
False(獨立顯示)
dodge布爾值True當使用hue時:
True(并排顯示)
False(重疊顯示)
orient字符串None方向:
'v'(垂直)
'h'(水平)
None(自動推斷)
palette字符串/列表None配色方案(如'viridis'/'Set2'
color顏色值None統一設置所有小提琴顏色
width浮點數0.8小提琴最大寬度(0~1)
linewidth浮點數1輪廓線寬度(像素)
cut浮點數2數據范圍外的延伸倍數(0=不延伸)
gridsize整數100密度曲線平滑度(值越大越平滑)

示例代碼

pip install seaborn matplotlib numpy
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np# 設置中文字體支持(如果需要顯示中文)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用黑體顯示中文
plt.rcParams['axes.unicode_minus'] = False    # 正常顯示負號# 創建示例數據(替代seaborn內置數據集)
np.random.seed(42)
data = {'Day': np.repeat(['Mon', 'Tue', 'Wed', 'Thu'], 100),'Sales': np.hstack([  # 修改為np.hstacknp.random.normal(120, 20, 100),np.random.normal(80, 15, 100),np.random.normal(150, 30, 100),np.random.normal(95, 25, 100)])
}# 創建圖形
plt.figure(figsize=(10, 6))
ax = sns.violinplot(x='Day',y='Sales',data=data,hue='Day',  # 新增hue參數inner='quartile',palette='Pastel1',legend=False  # 隱藏圖例
)# 添加標題和標簽
plt.title('每日銷售額分布', fontsize=14)
plt.xlabel('星期', fontsize=12)
plt.ylabel('銷售額 (萬元)', fontsize=12)# 計算并添加中位數注釋
medians = [np.median(data['Sales'][data['Day'] == day]) for day in ['Mon', 'Tue', 'Wed', 'Thu']]
vertical_offset = np.mean(medians) * 0.05  # 偏移量for i, median in enumerate(medians):ax.text(x=i,y=median + vertical_offset,s=f'中位: {median:.1f}',ha='center',  # 水平居中va='bottom',  # 垂直底部對齊fontsize=10,color='black',weight='bold')# 添加特殊注釋
ax.annotate('最高銷售額區間',xy=(2, 200),xytext=(2.5, 220),arrowprops=dict(arrowstyle='->', color='red', linewidth=1.5),fontsize=12,color='darkred',bbox=dict(boxstyle="round,pad=0.3", fc="white", ec="gray", lw=1))# 添加網格線
plt.grid(axis='y', linestyle='--', alpha=0.7)# 保存高清圖像(支持多種格式:png, jpg, svg, pdf)
plt.savefig('violin_plot.png',dpi=300,           # 高分辨率bbox_inches='tight',  # 緊湊布局facecolor='white')    # 背景色# 顯示圖像(可選)
plt.tight_layout()
plt.show()print("圖像已保存為 violin_plot.png")

3D曲面圖(

繪圖庫介紹

Python繪制3D曲面圖-CSDN博客https://blog.csdn.net/weixin_41923961/article/details/83998917

維度描述典型實現場景
核心作用可視化三維空間中的連續表面理解復雜數學函數、物理現象的空間分布。
揭示變量間的非線性關系分析兩個自變量(X, Y)對因變量(Z)的共同影響(尤其非線性關系)。
展示空間數據的分布、趨勢和模式地理高程、物理場(溫度/壓力/電勢)、濃度分布的空間變化。
識別關鍵特征點(峰值、谷值、鞍點)定位最大值、最小值、轉折點或急劇變化區域。
實現場景數學與函數可視化繪制二元函數圖像(如?Z = sin(X2+Y2)),分析函數形狀。
地理信息系統地形圖、數字高程模型、坡度分析、洪水模擬。
物理學與工程學? 電磁場:電勢/磁場分布
? 力學:應力分布、振動模態
? 流體力學:流速/壓力場
? 熱力學:溫度場分布
化學與材料科學? 分子建模:電子云密度、勢能面
? 材料表征:表面粗糙度、成分濃度分布
氣象與海洋學? 氣象:大氣壓力/溫度場
? 海洋:海水溫度/鹽度垂直剖面
醫學與生物科學? 醫學:器官3D重建(CT/MRI)
? 生物學:蛋白質結構表面、藥物擴散模擬
計算機圖形學渲染復雜3D模型表面(如游戲場景、角色)
數據分析? 優化算法:損失函數曲面
? 響應面分析:多變量對輸出的影響

函數簽名(Function Signature)

ax.plot_surface(X, Y, Z, cmap=None,           # 顏色映射rstride=1,           # 行方向步長cstride=1,           # 列方向步長color=None,          # 固定顏色edgecolor=None,      # 網格線顏色alpha=1.0,           # 透明度shade=True,          # 是否啟用陰影antialiased=True,    # 抗鋸齒norm=None,            # 數據歸一化vmin=None, vmax=None # 顏色映射范圍**kwargs)

核心參數詳解表

參數說明
X, Y, Z必需,均為 2D 數組(形狀相同)。通常用?numpy.meshgrid()?生成
cmap顏色映射(如?'viridis',?'plasma',?'coolwarm'),需配合?facecolors?或?Z?值使用
rstride,?cstride網格采樣步長(減少可提升性能)。例如?rstride=5?表示每隔5行繪制
color固定曲面顏色(字符串或 RGB 元組),與?cmap?互斥
edgecolor網格線顏色(默認?'k'?黑色),設為?'none'?可隱藏網格
alpha透明度(0.0 透明 ~ 1.0 不透明)
shade是否用光照效果增強立體感(默認為?True
antialiased是否啟用抗鋸齒(默認為?True
vmin,?vmax顏色映射的數據范圍(配合?cmap?使用)

示例代碼

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 創建數據
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))  # 生成曲面數據 (二維sinc函數)# 創建圖形和3D坐標軸
fig = plt.figure(figsize=(12, 10))
ax = fig.add_subplot(111, projection='3d')# 繪制曲面圖
surf = ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8,rstride=2, cstride=2, antialiased=True)# 添加顏色條
fig.colorbar(surf, shrink=0.5, aspect=10, label='Z Value')# 添加全局標題
plt.suptitle('3D Surface Plot with Annotations', fontsize=16)# 添加軸標簽
ax.set_xlabel('X Axis', fontsize=12, labelpad=15)
ax.set_ylabel('Y Axis', fontsize=12, labelpad=15)
ax.set_zlabel('Z Axis', fontsize=12, labelpad=15)# 添加點注解
point = (0, 0, 1)  # 要注解的點 (x, y, z)
ax.scatter(*point, color='red', s=100, label='Global Max')
ax.text(point[0], point[1], point[2] + 0.2,'Global Maximum',color='red',fontsize=12,ha='center')# 添加指向局部最小值的箭頭注解
min_point = (-3.5, 3.5, Z[35, 35])
ax.scatter(*min_point, color='blue', s=80)
ax.annotate('Local Minimum',xy=(min_point[0], min_point[1]),  # 目標點xytext=(-50, 30),                 # 文本位置偏移textcoords='offset points',arrowprops=dict(arrowstyle='->', lw=1.5, color='blue'),fontsize=10,color='blue')# 添加圖例
ax.legend(loc='upper right', fontsize=10)# 調整視角
ax.view_init(elev=25, azim=-45)  # 仰角25度,方位角-45度# 添加圖形框注釋
fig.text(0.05, 0.02,'Generated by Matplotlib | Function: sin(sqrt(x2 + y2))',fontsize=9, color='gray')# 保存高分辨率圖片
plt.savefig('3d_surface_plot.png', dpi=300, bbox_inches='tight')# 顯示圖形
plt.tight_layout()
plt.show()

地理地圖(Folium/Geopandas)

繪圖庫介紹

Python繪制地圖神器folium介紹及安裝使用教程-CSDN博客https://blog.csdn.net/python2021_/article/details/123652555

函數簽名(Function Signature)

示例代碼

交互式圖表(Plotly/Bokeh)

繪圖庫介紹

函數簽名(Function Signature)

示例代碼

網絡圖(NetworkX)

繪圖庫介紹

函數簽名(Function Signature)

示例代碼

金融圖表(mplfinance)

繪圖庫介紹

函數簽名(Function Signature)

示例代碼

科學可視化(Mayavi)

繪圖庫介紹

函數簽名(Function Signature)

示例代碼

詞云(WordCloud)

繪圖庫介紹

函數簽名(Function Signature)

示例代碼

甘特圖(Plotly)

繪圖庫介紹

函數簽名(Function Signature)

示例代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83587.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

4種常見Python設計愛心創意實現方法

在Python中設計愛心創意有多種實現方式&#xff0c;以下介紹4種常見方法&#xff0c;并附上完整代碼&#xff1a; 方法1&#xff1a;使用數學方程繪制&#xff08;Matplotlib&#xff09; ??原理??&#xff1a;使用參數方程繪制心形曲線 ??效果??&#xff1a;光滑的數…

【Unity】R3 CSharp 響應式編程 - 使用篇(二)

一、通用的事件監聽用法 using System;using R3;using UnityEngine;namespace Aladdin.Standard.Observable.Common{public class CommonObservable : MonoBehaviour{// 默認會調用1次public SerializableReactiveProperty<int> serializableReactiveProperty;…

【原理解析】為什么顯示器Fliker dB值越大,閃爍程度越輕?

顯示器Fliker 1 顯示器閃爍現象說明2 Fliker量測方法2.1 FMA法2.2 JEITA法問題答疑&#xff1a;為什么顯示器Fliker dB值越大&#xff0c;閃爍程度越輕&#xff1f; 3 參考文獻 1 顯示器閃爍現象說明 當一個光源閃爍超過每秒10次以上就可在人眼中產生視覺殘留&#xff0c;此時…

3.需求分析與測試用例設計方法

設計方法 測試點 定義: 測試時需要考慮的可測試方面&#xff0c;不同公司可能稱為"檢查點"或其它名稱特點: 是需求分析的最后一個環節&#xff0c;用于解決"測哪里"和"怎么測"的問題舉例說明: 如同打架時的各種招數&#xff0c;如直接約架、設…

IEC 61347-1:2015 燈控制裝置安全標準詳解

IEC 61347-1:2015燈控制裝置安全標準詳解 IEC 61347-1:2015 是國際電工委員會&#xff08;IEC&#xff09;發布的燈控制裝置第1部分&#xff1a;通用要求和安全要求的核心標準&#xff0c;為各類照明用電子控制設備設定了全球通用的安全基準。該標準適用于獨立式或內置于燈具/…

從 GPT 的發展看大模型的演進

這是一個技術爆炸的時代。一起來看看 GPT 誕生后&#xff0c;與BERT 的角逐。 BERT 和 GPT 是基于 Transformer 模型架構的兩種不同類型的預訓練語言模型。它們之間的角逐可以從 Transformer 的編碼解碼結構角度來分析。 BERT&#xff08;Bidirectional Encoder Representatio…

多目標粒子群優化算法(MOPSO),用于解決無人機三維路徑規劃問題,Matlab代碼實現

多目標粒子群優化算法&#xff08;MOPSO&#xff09;&#xff0c;用于解決無人機三維路徑規劃問題&#xff0c;Matlab代碼實現 目錄 多目標粒子群優化算法&#xff08;MOPSO&#xff09;&#xff0c;用于解決無人機三維路徑規劃問題&#xff0c;Matlab代碼實現效果一覽基本介紹…

貪心算法應用:集合覆蓋問題詳解

貪心算法與集合覆蓋問題詳解 貪心算法在組合優化問題中展現出獨特優勢&#xff0c;集合覆蓋問題&#xff08;Set Cover Problem&#xff09;是其中的經典案例。本文將用2萬字全面解析貪心算法在集合覆蓋/劃分中的應用&#xff0c;涵蓋算法原理、正確性分析、Java實現、復雜度證…

MCP:讓AI工具協作變得像聊天一樣簡單 [特殊字符]

想象一下,你正在處理一個項目,需要從A平臺查看團隊討論,從B平臺獲取客戶信息,還要在GitHub上檢查代碼進度。傳統做法是什么?打開三個不同的網頁,在各個平臺間來回切換,復制粘貼數據,最后還可能因為信息分散而遺漏重要細節。 聽起來很熟悉?這正是當前工作流程的痛點所…

docker不用dockerfile

好的&#xff01;既然你不想使用 Dockerfile&#xff0c;我們就完全不寫 Dockerfile&#xff0c;改用你 Leader 提到的思路&#xff1a; 用基礎鏡像啟動一個容器 → 手動在容器里安裝依賴和復制項目 → 保存為新鏡像 這個方式更直觀&#xff0c;就像“你進入容器自己配置環境&a…

React與Vue核心區別對比

React 和 Vue 都是當今最流行、功能強大的前端 JavaScript 框架&#xff0c;用于構建用戶界面。它們有很多相似之處&#xff08;比如組件化、虛擬 DOM、響應式數據綁定&#xff09;&#xff0c;但也存在一些核心差異。以下是它們的主要區別&#xff1a; 1. 核心設計與哲學 Rea…

強化學習-深度學習和強化學習領域

在深度學習和強化學習領域&#xff0c;SFT&#xff08;Supervised Fine-Tuning&#xff09; 和 GRPO&#xff08;可能指 Gradient-based Policy Optimization 或 Reinforcement Learning with Policy Optimization&#xff09;是兩種不同的訓練范式&#xff0c;常用于模型微調或…

在 ABP VNext 中集成 Serilog:打造可觀測、結構化日志系統

&#x1f680; 在 ABP VNext 中集成 Serilog&#xff1a;打造可觀測、結構化日志系統 &#x1f4da; 目錄 &#x1f680; 在 ABP VNext 中集成 Serilog&#xff1a;打造可觀測、結構化日志系統1. 為什么要使用結構化日志&#xff1f; &#x1f914;2. 核心集成步驟 &#x1f6e…

API異常信息如何實時發送到釘釘

#背景 對于一些重要的API&#xff0c;開發人員會非常關注API有沒有報錯&#xff0c;為了方便開發人員第一時間獲取錯誤信息&#xff0c;我們可以使用插件來將API報錯實時發送到釘釘群。 接下來我們就來實操如何實現 #準備工作 #創建釘釘群 如果已有釘釘群&#xff0c;可以跳…

Stone 3D新版本發布,添加玩家控制和生物模擬等組件,增強路徑編輯功能,優化材質編輯

后續版本號改為構建日期加小版本&#xff0c;所以最新版本為20250603.01 功能更新如下&#xff1a; 1. 改寫fps-controls組件&#xff0c;簡化游戲應用的創建&#xff0c;你只需要一個場景glb&#xff0c;然后給Scene節點添加fps-controls組件&#xff0c;即可完成一個第一人…

【C++11】折疊引用和完美轉發

目錄 一. 前言二. 引用折疊引用折疊的規則 三. 完美轉發完美轉發適用場景完美轉發底層實現思考1思考2 一. 前言 在函數傳參時&#xff0c;如果想保持某個參數的屬性不改變&#xff0c;需要完美轉發&#xff0c;而完美轉發的實現需要折疊引用的幫助 二. 引用折疊 在語法上&am…

Vue 樹狀結構控件

1、效果圖如下所示&#xff1a; 2、網絡請求的數據結構如下&#xff1a; 3、新建插件文件&#xff1a;menu-tree.vue&#xff0c;插件代碼如下&#xff1a; <template><div class"root"><div class"parent" click"onParentClick(pare…

洛谷P12610 ——[CCC 2025 Junior] Donut Shop

題目背景 Score: 15. 題目描述 The owner of a donut shop spends the day baking and selling donuts. Given the events that happen over the course of the day, your job is to determine the number of donuts remaining when the shop closes. 輸入格式 The first …

數據挖掘頂刊《IEEE Transactions on Knowledge and Data Engineering》2025年5月研究熱點都有些什么?

本推文對2025年5月出版的數據挖掘領域國際頂級期刊《IEEE Transactions on Knowledge and Data Engineering》進行了分析&#xff0c;對收錄的62篇論文的關鍵詞與研究主題進行了匯總&#xff0c;并對其中的研究熱點進行了深入分析&#xff0c;希望能為相關領域的研究人員提供有…

華為OD機試真題——最小的調整次數/特異性雙端隊列(2025B卷:100分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 B卷 100分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 2025華為OD真題目錄+全流程解析/備考攻略/經驗分享 華為OD機試真題《最小的調整次數/特異性雙端…