You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python 3D直方图的“壁”上绘制等高线并优化可读性

热波事件时空演化可视化优化需求

背景与定义

需可视化热波事件的时空演化:热波定义为日温高于阈值,强度为实测温度与阈值的差值。

预处理流程

通过脚本计算热波像素的时空连通性,采用聚类方法分离热波事件,保存各事件的经度、纬度、时间、强度文本文件。

当前实现

使用Python代码绘制4D热波事件的3D直方图,修改后的代码示例如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import LongitudeFormatter, LatitudeFormatter

longitude = np.array([-9.4, -9.4, -9.4, -9.3, -9.3, -9.3])
latitude = np.array([38.8, 38.9, 39.0, 38.7, 38.8, 38.9])
z = np.array([1, 1, 1, 2, 2, 2])
intensity = np.array([1.0082481938068, 1.0974287307475, 1.115724032552, 
                      1.4837606317027, 1.3200661292037, 1.2509449282401])
# 设置柱状图的位置与尺寸
dx = dy = 1  # 柱状图的宽度与深度
dz = 1       # 柱状图的高度

# 初始化3D绘图
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# 绘制3D柱状图
ax.bar3d(longitude, latitude, z + 5, dx, dy, dz, color=plt.cm.Reds(intensity / np.max(intensity)))

# 设置网格线为虚线样式
ax.xaxis._axinfo['grid'].update(linestyle="--")
ax.yaxis._axinfo['grid'].update(linestyle="--")
ax.zaxis._axinfo['grid'].update(linestyle="--")

# 设置z轴刻度与标签
z_ticks = np.arange(5, 35, 5)  # 每5天设置一个刻度
z_labels = ['8月6日', '8月11日', '8月16日', '8月21日', '8月26日', '8月31日']  # 按时间顺序设置刻度标签
ax.set_zticks(z_ticks)
ax.set_zticklabels(z_labels)

# 设置坐标轴标签
ax.set_xlabel('经度')
ax.set_ylabel('纬度')
# ax.set_zlabel('日期')

# 设置刻度标签对齐方式
ax.set_xticklabels(ax.get_xticks(), verticalalignment='baseline')
ax.set_yticklabels(ax.get_yticks(), verticalalignment='baseline', horizontalalignment='left')

# 调整刻度标签与坐标轴的间距
ax.tick_params(axis='x', pad=2.5)  # 调整x轴标签间距
ax.tick_params(axis='y', pad=0.5)  # 调整y轴标签间距
ax.tick_params(axis='z', pad=8)    # 调整z轴标签间距

# 格式化经纬度标签
ax.xaxis.set_major_formatter(LongitudeFormatter())
ax.yaxis.set_major_formatter(LatitudeFormatter())

# 添加颜色条
mappable = plt.cm.ScalarMappable(cmap=plt.cm.Reds)
mappable.set_array(intensity)
cbar = plt.colorbar(mappable, ax=ax, shrink=0.5, aspect=13)  # 指定目标坐标轴
cbar.set_label('强度 (°C)')

plt.show()

已生成对应可视化图,后续根据建议优化了图形雏形,但仍需改进。

问题需求

  • 优化该3D直方图的可读性;
  • 实现将图形投影到3D直方图的“壁”上,以提升z值的读取体验,曾尝试使用contourf()但未成功。

内容的提问来源于stack exchange,提问作者Bastounator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 13:05:02