浙大疏锦行一、知识点回顾- 查看数据data.info()- 查看单列内容统计data[Years in current job].value_counts()- 有序离散变量用字典进行映射mapping{2 years:2,3 years:3,5 years:5}data[Years in current job]data[Years in current job].map(mapping)- 重命名列名feature_name_mapping{Annual Income:年收入,Tax Liens:税收留置权}data_cndata.rename(columnsfeature_name_mapping)1.1 热力图绘制热力图适合连续变量之间的关系对于离散变量相关系数的解读需谨慎用热力图展示特征之间的相关系数皮尔逊相关系数import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 提取连续特征列 continuous_features[年收入,税收留置权] #计算相关系数矩阵 corr_matrixdata_cn[continuous_features].corr() #设置图片清晰度(一般要求300及以上) plt.rcparams[figure.dpi]300 #设置中文字体 plt.rcparams[font.sans-serif][SimHei] #正常显示负号 plt.rcparams[axes.unicode_minus]False #绘制热力图 plt.figure(figsize(12,10)) sns.heatmap( corr_matrix, annotTrue, #是否在每个格子中显示数值 cmapcoolwarm #配色方案 蓝白红 vmin-1,vmax1 #固定颜色映射的边界不设置对比会失真 fmt.2f # 控制各自内数字的显示格式 linewidths0.5 #格子之间分割线宽度 ) plt.title(连续特征相关系数热力图) plt.tight_layout()#自动调整元素间距防止重叠不同配色方案热力图coolwarm: 冷暖色调,适合展示正负相关(蓝色表示负相关,红色表示正相关)RdYlGn: 红黄绿配色,直观展示好坏程度viridis: 色盲友好,从紫色到黄色的渐变plasma: 鲜艳的紫红黄配色YlOrRd: 从黄色到橙色到红色,适合展示强度1.2 子图Subplot绘制1. 生成数据import numpy as np import matplotlib.pyplot as plt #A子图数据 #np.linspace(起始值终点值总点数) 生成均匀等分数字序列 x_sinnp.linspace(0,2*pi,100) #生成对应正弦值 y_sinnp.sin(x_sin) #B子图数据 #随机生成0~1之间50个数 x_scatternp.random.rand(50) y_scatternp.random.rand(50) #c子图 categories [A, B, C, D] values [15, 30, 10, 25] # 子图D的数据线性衰减 #生成0~N-1的整数序列 X_linear np.arange(10) Y_linear 10 - X_linear * 0.8 np.random.randn(10) * 0.52. 绘制子图# fig代表整个画布axes代表所有子图的坐标轴对象 fig,axesplt.subplots( nrows2 #行数 ncols2 #列数 figsize(10,8) #画布大小 dpi100 #图的分辨率 ) #子图A ax_Aaxes[0,0] #A子图位于[0,0] ax_A.plot(X_sin, Y_sin, colortab:blue, labelSin Wave) ax_A.set_title((a) 正弦波变化, fontsize14, fontweightbold) ax_A.set_xlabel(时间 (t)) ax_A.set_ylabel(振幅 (A)) ax_A.legend() #显示图例 子图 B (位于第一行第二列axes[0, 1]) - 绘制散点图 ax_B axes[0, 1] ax_B.scatter(X_scatter, Y_scatter, cX_scatter, cmapviridis, alpha0.7) ax_B.set_title((b) 随机散点分布, fontsize14, fontweightbold) ax_B.set_xlabel(特征 X) ax_B.set_ylabel(特征 Y) # 子图 C (位于第二行第一列axes[1, 0]) - 绘制条形图 ax_C axes[1, 0] ax_C.bar(categories, values, colortab:orange) ax_C.set_title((c) 分类计数, fontsize14, fontweightbold) ax_C.set_xlabel(类别) ax_C.set_ylabel(数量) # 子图 D (位于第二行第二列axes[1, 1]) - 绘制带误差的折线图 ax_D axes[1, 1] ax_D.errorbar(X_linear, Y_linear, yerr0.5, fmt-o, colortab:red, capsize4) ax_D.set_title((d) 线性衰减趋势, fontsize14, fontweightbold) ax_D.set_xlabel(迭代次数) ax_D.set_ylabel(结果值) # 自动调整子图参数使之填充整个 figure 区域避免标签重叠 fig.tight_layout(pad3.0) # 给整个画布添加一个总标题 fig.suptitle(论文多子图绘制示例, fontsize18, fontweightbold, y1.02) # ----------------- # 5. 显示和保存 # ----------------- plt.show() # 如果要保存高质量图片建议使用矢量格式例如 # fig.savefig(my_subplots.pdf, formatpdf, bbox_inchestight) # fig.savefig(my_subplots.png, dpi300) # 位图保存