前言

这是一个多边形组件热图程序,跟上一节的六边形组件类似,用于计算出整个通道内的数据的最大、最小值,主要用到的知识matplotlib、Numpy、Pandas,也就是python中的科学计算、数据分析以及可视化绘图库。

多边形组件热图
下面是这个程序运行效果图:


源代码如下:

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon,Circle
from matplotlib.collections import PatchCollection
import pandas as pd
import numpy as np
from numpy import *def drawLIUBIANXING3( AsseNum, Pow, Dis):#数组类型转换AsseNum = AsseNum.astype(int)Dis     = Dis.astype(int)#数组长度leny=len(Dis[:,0])lenx=len(Dis[0,:])num =len(Pow)#计算Pow数组最大、最小值maxi=max(Pow)minu=min(Pow)rang=maxi-minuprint("目前物理量最大值为:",maxi)redline=maxiif np.isnan(redline):redline=maxi-rang*0.25print("目前物理量最小值为:",minu)  blueline=minu   #input('请输入蓝线值:')if np.isnan(blueline):blueline=minu+rang*0.25limit=minu  #input('请设定数据显示下限:')if np.isnan(limit):limit=redline#变量赋值  greenline=(redline+blueline)/2yellowline=(redline+greenline)/2cyanline=(greenline+blueline)/2xstep=0.198/2ystep=0.198/2*1.732patches = []colorm  = []#创建画布fig,ax = plt.subplots(figsize=(10,9))#绘图for i in range(leny):  for j in range(lenx): #数组下标减1AsseNum[i,j] -= 1if Dis[i,j]==4:x0=(j-(lenx+1)/2)*xstepy0=(i-(leny+1)/2)*ystepx=[x0-xstep,x0,x0+xstep,x0+xstep,x0,x0-xstep]y=[y0+xstep/1.732,y0+ystep/1.5,y0+xstep/1.732,y0-xstep/1.732,y0-ystep/1.5,y0-xstep/1.732]        #patch(x,y,[0.8,0.8,0.8])dot = np.transpose(np.vstack((x,y)))              patches.append( Polygon(dot,True))colorm.append(([0.8,0.8,0.8]))#填入数据,设置属性plt.text(x0,y0,'C',fontsize=8,horizontalalignment='center')     elif Dis[i,j]==5:x0=(j-(lenx+1)/2)*xstepy0=(i-(leny+1)/2)*ystepx=[x0-xstep,x0,x0+xstep,x0+xstep,x0,x0-xstep]y=[y0+xstep/1.732,y0+ystep/1.5,y0+xstep/1.732,y0-xstep/1.732,y0-ystep/1.5,y0-xstep/1.732] dot = np.transpose(np.vstack((x,y)))              patches.append( Polygon(dot,True))colorm.append(([1,1,1]))#填入数据,设置属性plt.text(x0,y0,'S',fontsize=8,horizontalalignment='center',color='red') elif AsseNum[i,j]>=0 and Pow[AsseNum[i,j]]>=0:x0=(j-(lenx+1)/2)*xstepy0=(i-(leny+1)/2)*ystepx=[x0-xstep,x0,x0+xstep,x0+xstep,x0,x0-xstep]y=[y0+xstep/1.732,y0+ystep/1.5,y0+xstep/1.732,y0-xstep/1.732,y0-ystep/1.5,y0-xstep/1.732]dot = np.transpose(np.vstack((x,y)))  patches.append( Polygon(dot,True))if Pow[AsseNum[i,j]]>=redline:colorm.append(([1,0,0]))elif Pow[AsseNum[i,j]]>=yellowline and Pow[AsseNum[i,j]]<=redline:#patch(x,y,[1,(redline-Pow(AsseNum[i,j],1))/(redline-yellowline),0])colorm.append(([1,(redline-Pow[AsseNum[i,j]])/(redline-yellowline),0]))elif Pow[AsseNum[i,j]]>=greenline and Pow[AsseNum[i,j]]<=yellowline:#patch(x,y,[(Pow(AsseNum[i,j],1)-greenline)/(yellowline-greenline),1,0])colorm.append(([(Pow[AsseNum[i,j]]-greenline)/(yellowline-greenline),1,0]))elif Pow[AsseNum[i,j]]>=cyanline and Pow[AsseNum[i,j]]<=greenline:#patch(x,y,[0,1,(greenline-Pow(AsseNum[i,j],1))/(greenline-cyanline)])colorm.append(([0,1,(greenline-Pow[AsseNum[i,j]])/(greenline-cyanline)]))elif Pow[AsseNum[i,j]]>=blueline and Pow[AsseNum[i,j]]<=cyanline:#patch(x,y,[0,(Pow(AsseNum[i,j],1)-blueline)/(cyanline-blueline),1])colorm.append(([0,(Pow[AsseNum[i,j]]-blueline)/(cyanline-blueline),1]))elif Pow[AsseNum[i,j]]<=blueline:#patch(x,y,[0,0,1])colorm.append(([0,0,1]))if Pow[AsseNum[i,j]]>=limit:#填入数据,设置属性plt.text(x0,y0,str(Pow[AsseNum[i,j]]),fontsize=7,horizontalalignment='center') #设置颜色,渲染到画布        collection   =  PatchCollection(patches,alpha=1)collection.set_facecolor(colorm)collection.set_edgecolor('black')ax.add_collection(collection)plt.autoscale(enable=True, axis='y')plt.autoscale(enable=True, axis='x')#显示图形plt.savefig('glp.png',dpi=300)plt.show()returnif __name__ == "__main__":#数据导入AsseNum  = np.loadtxt('assenum.txt')Pow  = np.loadtxt('Pow.txt')Dis  = np.loadtxt('Dis.txt')drawLIUBIANXING3( AsseNum, Pow, Dis)```

python人工智能之:多边形矩阵热图程序实战篇(二)相关推荐

  1. python人工智能之:六边形矩阵热图程序实战篇(一)

    前言 这是一个六边形组件热图程序,主要用到的知识matplotlib.Numpy.Pandas,也就是python中的科学计算.数据分析以及可视化绘图库. 注:根据Matlab组件程序改写,花了近一个 ...

  2. Vue实战篇二十七:实现走马灯效果的商品轮播图

    系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...

  3. 如何在R语言中建立六边形矩阵热图heatmap可视化

    原文链接:http://tecdat.cn/?p=18879 这是一个六边形热图可视化程序,主要用到的知识RColorBrewer,fields,也就是R中的可视化绘图库(点击文末"阅读原文 ...

  4. ML之MIC:利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现

    ML之MIC:利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现 目录 利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现 实现结果 实现代码 利用某数据集计算 ...

  5. 微信小程序实战篇-购物车

    哈喽,大家好,快半个月没写了,现在提笔都有点生硬了,一直没更新的原因,一个是代码君也要上班,加上最近工作比较忙,还有就是写文章一直未被认可,所以没什么动力再创作了,那时真的坚持不下去,打算放弃了,感谢 ...

  6. 微信小程序实战篇:商品属性联动选择(案例)

    本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果,素材参考了一点点奶茶. 效果演示: 商品属性联动.gif 代码示例 1.commodity.xml <!-- <v ...

  7. 微信小程序实战篇-下拉刷新与加载更多

    下拉刷新 实现下拉刷新目前能想到的有两种方式 调用系统的API,系统有提供下拉刷新的API接口 下拉刷新API.png 监听scroll-view,自定义下拉刷新,还记得scroll-view里面有一 ...

  8. 微信小程序实战篇:实现抖音评论效果

    IT实战联盟博客:http://blog.100boot.cn 我们在写小程序的时候经常会遇到弹出层的效果而现有官网提供的跳转方法多数是不支持参数传递的.本文教大家做一个抖音评论效果的小程序 首先看下 ...

  9. 微信小程序实战篇-商品详情页(二)

    今天要讲解商品详情页中sku的弹出选着框,这个涉及css动画样式,css动画是新的知识点,我们之前并没有接触过,请大家做好笔记,我们要做的效果是酱紫的~ 这个布局难点是需要绘制一个阴影背景.弹出的动画 ...

最新文章

  1. 在虚拟机中安装Ubuntu Server 15.04
  2. Keras之MLPR:利用MLPR算法(1to1+【Input(1)→8(relu)→O(mse)】)实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题
  3. hdu 3962(AC自动机+矩阵优化dp)
  4. TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成
  5. Spring Session实战
  6. 一次对路边饮用水RFID供应机的跑路玩法
  7. linux中wine yum安装,分享|在基于RedHat或Debian的系统上安装 Wine 1.7
  8. 2017年网易校招题 数字翻转
  9. html移动端即时翻译插件,React框架实现移动页面翻译是一种什么体验?
  10. 032-IDUtils 工具类模板
  11. c/c++ hash表 (哈希表、字典表)
  12. FFmpeg源码分析:avcodec_find_decoder()查找解码器
  13. C标签是什么,为什么要使用C标签,有哪些常见的指令?
  14. 基于思维导图的研究生创新能力培养
  15. 地鼠君黑盒测试--小白功能测试避雷经验分享
  16. 小猿圈python之python期末考试测试题(二)_小猿圈Python开发面试题(二)
  17. Ubuntu16.04下安装有道翻译
  18. Amy-Tabb机器人世界手眼标定(4、Windows)
  19. Http和Https详解,以及get与post的区别
  20. riopoly matlab,rio极简数据导入教程

热门文章

  1. java计算机毕业设计校园二手书交易系统源码+系统+数据库+lw文档+mybatis+运行部署
  2. 发展战略-以技术为导向还是以产品为导向的方向选择?
  3. centeros7命令汇总
  4. 笔记本电脑亮度不能调节的一种解决方案
  5. mysql中解决“SELECT command denied to user ‘nature‘@‘192.168.1.49‘ for table ‘user_variables_by_thread‘“
  6. Java中对数组降序排列
  7. Kafka知识点概述
  8. 面向对象方法及软件工程实验二
  9. github的Whoa there!问题
  10. Your IP address is spelled incorrectly问题排查