当前位置:首页>python>Python绘制高颜值3D表格型时序热图

Python绘制高颜值3D表格型时序热图

  • 2026-09-11 21:07:53
Python绘制高颜值3D表格型时序热图

代码绘制成果展示

成果图
这是一张展示多区域随时间变化趋势的3D柱状热图,图中的水平X轴代表“时间”,从2004年跨越至2023年;Y轴代表十种不同区域类型,自下而上分别为陆地、水体、森林、城市、草地、湿地、裸地、灌木、草甸和沼泽;网格中每一个长方体柱子代表特定年份下对应区域的观测数据,且柱体的高度与表面颜色双重映射了LST/地表温度数值大小;右侧的颜色条显示数据范围在0到30之间,呈现从蓝到红的冷暖色调渐变过渡;图中空白无柱体的网格区域则表示该时间和空间节点下的数据缺失或数值极小,整体图在二维平面上直观且立体地展现了不同区域地表温度在近二十年间的时空演变规律与冷热差异。
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib.colors as mcolors

第二部分

设置颜色库
# =========================================================================================# ====================================== 2. 颜色库 =======================================# =========================================================================================COLOR_SCHEMES = {    1: 'coolwarm'}

第三部分

绘图函数:数据准备与画布初始化
# =========================================================================================# ====================================== 3.绘图函数 ==================================# =========================================================================================def plot_advanced_3d_heatmap(df_data, scheme_id):    counts_matrix = df_data.values  # 提取数据    n_rows, n_cols = counts_matrix.shape  # 获取行数和列数    fig, ax = plt.subplots(figsize=(9.0, 5.0))    ax.set_aspect('equal')  #坐标轴长宽比例    ax.set_facecolor('#e6e6e6')  #背景色

第四部分

绘图函数:绘制网格线、标题
    #遍历绘制垂直方向的网格线    for x in range(1, n_cols):        ax.axvline(x,  #轴                   color='white',  #颜色                   linewidth=1.5,  #线宽                   zorder=0)  #层    #y轴标题    ax.set_ylabel('Regions',  #文本                  fontsize=15,  #字体大小                  labelpad=10)  #间距    #x轴标题    ax.set_xlabel('Time',  #文本                  fontsize=15,  #字体大小                  labelpad=10)  #间距

第五部分

绘图函数:绘制 3D 柱体
    # 3D柱状图在x、y方向的宽度    pad_x = (1.0 - bar_width_x) / 2.0  #单元格y方向的内边距,以便柱体居中对齐    pad_y = (1.0 - bar_width_y) / 2.0  #单元格y方向的内边距,以便柱体居中对齐    #遍历排序后单元格    for i, j in cells:        count = counts_matrix[j, i]  #获取当前行列数值        if count == 0:        h = h_val * hscale  # 乘以高度缩放系数计算出最终图形高度        base_x = i + pad_x  #当前3D柱体左下角x        base_y = j + pad_y  #当前3D柱体左下角y            #添加到图上            ax.add_patch(QM)        ax.add_patch(top)  #添加到图上

第六部分

绘图函数:坐标轴与刻度整理
    x_ticks_pos = np.arange(n_cols) + 0.5  #X轴刻度位置    ax.set_xticks(x_ticks_pos)  #设置刻度    #x轴刻度标注    ax.set_xticklabels(df_data.columns,  #文本                       rotation=90,  #旋转                       va='top',  #垂    ax.set_xlim(0, n_cols)    ax.set_ylim(0, n_rows)    ax.tick_params(axis='x',  #轴                   which='major',  #主刻度                   length=5,  #长                   width=1.5,  #粗细                   color='#111111')  #颜色    #y轴刻度设置    ax.tick_params(axis='y',  #轴                   which='major',  #主刻度                   length=5,  #长                   width=1.5,  #粗细                   color='#111111')  #颜色    plt.subplots_adjust(right=0.88, bottom=0.2)  #调整布局

第七部分

绘图函数:绘制颜色条以及绘图结果保存
    #颜色条轴    cax = inset_axes(ax,  #坐标轴                     width="2%",  #宽度比例                     height="55%",  #高度比例                     loc='lower left',  #位置                     bbox_to_anchor=(1.05, 0.15, 1, 1),  #坐标    cbar.ax.set_title('LST',  #文本                      pad=12,  #间距                      fontsize=14,  #字体大小                      fontweight='bold',  #加粗                      loc='left')  #左对齐

第八部分

执行部分
# =========================================================================================# ======================================4 . 执行部分===================================# =========================================================================================if __name__ == '__main__':    df_real = pd.read_excel(r'data.xlsx')#读取数据    df_plot = df_real.set_index('Region')  #将Region列设置为索引    else:        scheme_id = 1        selected_cmap = COLOR_SCHEMES[scheme_id]        print('正在绘制并保存方案:', scheme_id)        plot_advanced_3d_heatmap(df_plot, scheme_id)

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:

df_real = pd.read_excel(r'data.xlsx')#读取数据

2.设置y轴的刻度标注数据,执行部分:

df_plot = df_real.set_index('Region')  #将Region列设置为索引

3.设置是否要进行批量绘图,执行部分:

plot_all =True #是否批量绘图

4.设置绘图结果的保存地址,绘图函数部分:

plt.savefig( fr'3d_heatmap_{scheme_id}.png', dpi=300, bbox_inches='tight')

推荐

期刊图片复现|Python绘制二维偏依赖PDP图
期刊复现|python绘制基于SHAP分析和GAM模型拟合的单特征依赖图
期刊图片复现|python绘制带有渐变颜色shap特征重要性组合图(条形图+蜂巢图)
期刊复现|用Python绘制SHAP特征重要性总览图、依赖图、双特征交互效应SHAP图,解锁XGBoost模型的终极奥秘
期刊图片复现|Python绘制shap重要性蜂巢图+单特征依赖图+交互效应强度气泡图+交互效应依赖图(回归+二分类+分类)

获取方式

公众号中的所有所有的免费代码都已经下架了,都并入到付费部分里了,付费合集代码和数据的购买通道已经开通,全部合集100元,后续将会持续更新,决定购买请后台私信我,注意只会分享练习数据和代码文件,不会提供答疑服务,代码文件中已经包含了每行代码的完整注释,购买前请确保真的需要!!!

最新文章

随机文章