⚡机器学习⚡中Python实现可视化三维热力图(地形图)

简介: ⚡机器学习⚡中Python实现可视化三维热力图(地形图)

由于项目的需要,一直苦于将多层数据集累加起来做成一个呈堆积状的三维图,有点类似于地形图(实则热力图),但又不是地形图。

image.png

背景

先说说项目背景,本菜鸡是搞故障诊断的,所以免不了用上一些统计学的知识,看过之前我的Blog的都会发现,T 2 T^2T

2

 和 S P E SPESPE 在故障诊断邻域或者说是再小范围一点,在过程监控邻域,是很好用且很关键的两个统计量,用于监测过程中的一些有故障的检测点或者区间,会有阈值限,超过阈值的则判断为故障,反而,则为正常。具体可以看->这里。


三维图

之前尝试过很多中方法来实现三维图,但是,。。。,但是均没实现完美的效果,如Echarts、Pyecharts、Plotly等等,最终还是只有用yyds,真的,没有它解决不了的可视化问题!!!


输入

image.png

image.png

(数据就像上面那样,这里我们以 T 2

 的多层可视化为例展开吧)


那么下面我们直接开始搞可视化吧!!!


输出

输出最终则为我们的可视化三维图,先不爆料,看后续。


可视化

我们用的Python来实现可视化。


导入库

库先给导入进来:

import matplotlib.pyplot as plt    # 可视化的matplotlib库
import pandas as pd                # 数据表操作的库
from mpl_toolkits.mplot3d import Axes3D   # 三维可视化
from icecream import ic            # 类似于print输出


封装一些Function

虽然我们的代码不是很长,但为了代码的规范和美观,建议还是讲其封装为一个一个的function,这样调用起来更方便。

  1. 读取数据表
def loaddata(filename):
    """
    读取传入得数据表
    """
    dtf = pd.read_csv(filename)    # 读取表格文件
    return dtf

T2 三维热力图

def T2_plot(df_value, df_xy):
    """
    绘制T2三维热力图  
    """
    #获取行列数
    q1 = df_value.shape[1]  # 列数
    r1 = df_value.shape[0]  # 行数
    print('x_y有%r行,%r列。' % (r1, q1))
    X = []
    Y = []
    Z = []
    # 设置空数组备用
    for a in range(2, q1):  # 选择需要叠加的Value量选值范围2~11, 应该遍历所有列,因为每个数据表的维度不一定一致,所以最大通过获取的列传入
        for xx in range(r1 + 1):  # 循环迭代不同的层数
            if xx < r1:
                IIx = df_xy.iloc[xx, 0]  # 取第一列的值
                IIy = df_xy.iloc[xx, 1]  # 取第二列的值
                IIz = df_value.iloc[xx, a]  # 取相应的T2或SPE的值
                # 将每个坐标轴X,y及其T2或SPE的值存入一个list中
                X.append(IIx)
                Y.append(IIy)
                Z.append(IIz)
    ic(len(Z))  # 查看Z的数量
    # 开始制图
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.set_xlabel('IX', fontsize=10, color='black')  # 设置x标签及其参数
    ax.set_ylabel('JY', fontsize=10, color='black')  # 设置y标签及其参数
    ax.set_zlabel('Value', fontsize=10, color='black')   # 设置z标签及其参数
    ax.plot_trisurf(X, Y, Z, cmap=plt.get_cmap('jet'), linewidth=0.1)  # 三角表面图
    plt.show()    # 渲染3D图显示
  1. 主函数
# 主函数
if __name__=="__main__":
    # 导入数据表文件名
    T2_name = "T2.csv"
    xy_name = "x_y.csv"
    # 读取数据表
    t2 = loaddata(T2_name)
    xy = loaddata(xy_name)
    # 制作T2三维图
    T2_plot(df_value=t2, df_xy=xy)

最终的效果图像这样:

image.png

换个方位再来一张:

image.png

让我们再看看底部:

image.png

深色的地方则是有多个相近的点堆积到一起的,所以会在那些点显得颜色很深。

来个大汇总,完整代码

import matplotlib.pyplot as plt
import pandas as pd
from mpl_toolkits.mplot3d import Axes3D
from icecream import ic
# 读取数据表
def loaddata(filename):
    """
    读取传入得数据表
    """
    dtf = pd.read_csv(filename)    # 读取表格文件
    return dtf
# T2三维热力图
def T2_plot(df_value, df_xy):
    """
    绘制T2三维热力图  todo:完善
    """
    #获取行列数
    q1 = df_value.shape[1]  # 列数
    r1 = df_value.shape[0]  # 行数
    print('x_y有%r行,%r列。' % (r1, q1))
    X = []
    Y = []
    Z = []
    # 设置空数组备用
    for a in range(2, q1):  # 选择需要叠加的Value量选值范围2~11, 应该遍历所有列,因为每个数据表的维度不一定一致,所以最大通过获取的列传入
        for xx in range(r1 + 1):  # 循环迭代不同的层数
            if xx < r1:
                IIx = df_xy.iloc[xx, 0]  # 取第一列的值
                IIy = df_xy.iloc[xx, 1]  # 取第二列的值
                IIz = df_value.iloc[xx, a]  # 取相应的T2或SPE的值
                # 将每个坐标轴X,y及其T2或SPE的值存入一个list中
                X.append(IIx)
                Y.append(IIy)
                Z.append(IIz)
    ic(len(Z))  # 查看Z的数量
    # 开始制图
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.set_xlabel('IX', fontsize=10, color='black')  # 设置x标签及其参数
    ax.set_ylabel('JY', fontsize=10, color='black')  # 设置y标签及其参数
    ax.set_zlabel('Value', fontsize=10, color='black')   # 设置z标签及其参数
    ax.plot_trisurf(X, Y, Z, cmap=plt.get_cmap('jet'), linewidth=0.1)  # 三角表面图
    plt.show()    # 渲染3D图显示
# 主函数
if __name__=="__main__":
    # 导入数据表文件名
    T2_name = "T2.csv"
    xy_name = "x_y.csv"
    # 读取数据表
    t2 = loaddata(T2_name)
    xy = loaddata(xy_name)
    # 制作T2三维图
    T2_plot(df_value=t2, df_xy=xy)



相关文章
|
3月前
|
数据采集 数据可视化 搜索推荐
Python数据分析全流程指南:从数据采集到可视化呈现的实战解析
在数字化转型中,数据分析成为企业决策核心,而Python凭借其强大生态和简洁语法成为首选工具。本文通过实战案例详解数据分析全流程,涵盖数据采集、清洗、探索、建模、可视化及自动化部署,帮助读者掌握从数据到业务价值的完整技能链。
458 0
|
3月前
|
存储 数据可视化 BI
Python可视化应用——学生成绩分布柱状图展示
本程序使用Python读取Excel中的学生成绩数据,统计各分数段人数,并通过Matplotlib库绘制柱状图展示成绩分布。同时计算最高分、最低分及平均分,实现成绩可视化分析。
251 0
|
2月前
|
数据采集 数据可视化 API
驱动业务决策:基于Python的App用户行为分析与可视化方案
驱动业务决策:基于Python的App用户行为分析与可视化方案
|
3月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
5月前
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
897 12
Scikit-learn:Python机器学习的瑞士军刀
|
3月前
|
存储 数据采集 数据可视化
Python自动化分析知网文献:爬取、存储与可视化
Python自动化分析知网文献:爬取、存储与可视化
|
4月前
|
数据采集 Web App开发 自然语言处理
利用Python构建今日头条搜索结果的可视化图表
利用Python构建今日头条搜索结果的可视化图表
|
6月前
|
数据采集 数据可视化 数据挖掘
基于Python的App流量大数据分析与可视化方案
基于Python的App流量大数据分析与可视化方案
|
7月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
7月前
|
数据可视化 前端开发 数据挖掘
使用Folium在Python中进行地图可视化:全面指南
Folium是基于Python的交互式地图可视化库,依托Leaflet.js实现地理空间数据展示。本文从安装、基础使用到高级功能全面解析Folium:包括创建地图、添加标记、保存文件,以及绘制热力图、多边形和Choropleth地图等高级操作。通过展示北京市景点与全球地震数据的实际案例,结合性能优化、自定义样式和交互性增强技巧,帮助用户掌握Folium的核心功能与应用潜力,为数据分析提供直观支持。
642 3

热门文章

最新文章

推荐镜像

更多