Python画3维热力图

使用Python画三维可拖动热力图,并且设置热力图颜色变化范围

使用Python画3维热力图时,可能会遇到两个问题,一是是否画表面的图,这个图是否可以拖动演示。二是因为数据分布不均匀导致色条的范围与预想的不一致。(图片来自网络)

3维绘图,Axes3D演示

使用Python的matplotlib及其工具包mpl_toolkits。可以实现数据的三维绘制。

# 使用pip指令可以直接完成这两者的安装
pip install matplotlib mpl_toolkits

主要思路为:构建画布>生成坐标网格>绘制曲面>设置文本条目(标签、标题等)>演示,整个过程是针对第一个问题,其中在绘图时注意的关于色条的参数,是针对第二个问题

# 导入必要的包
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

def draw3d(x, y, z, name):
		# 构建画布
    fig = plt.figure(figsize=(64, 48), dpi=300)
    ax = plt.axes(projection='3d')  # 设置为3D演示图
    # 生成网格坐标,如果直接代入x,y到绘图,会是两列向量,而不是一组一组点对,会和z轴的数据无法一一对应
    X, Y = np.meshgrid(x, y)
    # 这里对色条进行了设置,主要有三个参数:
    # color map : 色条的色系,例如jet是红-绿-蓝组成。
    # vmin - vmax : 这两个就是控制color map数值范围的参数
    surf = ax.plot_surface(X, Y, z, cmap=plt.get_cmap("jet"), vmin=-1, vmax=1)
    # 设置标签、标题等
    ax.set_xlabel('X', {'fontsize': 10})
    ax.set_ylabel('Y', {'fontsize': 10})
    ax.set_zlabel('Polarization', {'fontsize': 10})
    xlabels = np.around(np.arange(-4, 4, 0.5), decimals=1)
    zlabels = np.around(np.arange(-1, 1, 0.2), decimals=1)
    ax.set_xticks(xlabels)
    ax.set_yticks(xlabels)
    ax.set_zticks(zlabels)
    ax.set_xticklabels(xlabels, fontsize=3)
    ax.set_yticklabels(xlabels, fontsize=3)
    ax.set_zticklabels(zlabels, fontsize=3)
    ax.set_title(name, {'fontsize': 10, 'fontweight': 'bold'})
    # 为图片添加色条
    plt.colorbar(surf)
    plt.show()  # 展示图片
    plt.close()  # 记得关闭图片,不然可能会覆盖或者影响下一张图片的绘制

注意事项

Color map(cmap)和Vmin,Vmax这三个参数在使用其他绘制函数时,也就是不适用plot_surface()函数时,可能需要在其他指定的地方设置,但是这三个参数的名字始终是color map(cmap), vmin, vmax, 请注意甄别!

个人博客:https://kecilimu-notion.vercel.app/

个人邮箱:kecilimu@163.com

转载请务必注明出处

文章主图是陌芋大大的图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值