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)

  • scalexscaley: 是否自动缩放坐标轴 (默认为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(X²+Y²)),分析函数形状。
地理信息系统地形图、数字高程模型、坡度分析、洪水模拟。
物理学与工程学• 电磁场:电势/磁场分布
• 力学:应力分布、振动模态
• 流体力学:流速/压力场
• 热力学:温度场分布
化学与材料科学• 分子建模:电子云密度、势能面
• 材料表征:表面粗糙度、成分浓度分布
气象与海洋学• 气象:大气压力/温度场
• 海洋:海水温度/盐度垂直剖面
医学与生物科学• 医学:器官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 值使用
rstridecstride网格采样步长(减少可提升性能)。例如 rstride=5 表示每隔5行绘制
color固定曲面颜色(字符串或 RGB 元组),与 cmap 互斥
edgecolor网格线颜色(默认 'k' 黑色),设为 'none' 可隐藏网格
alpha透明度(0.0 透明 ~ 1.0 不透明)
shade是否用光照效果增强立体感(默认为 True
antialiased是否启用抗锯齿(默认为 True
vminvmax颜色映射的数据范围(配合 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(x² + y²))',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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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机试真题《最小的调整次数/特异性双端…