博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用python的matplotlib包绘制热度图
阅读量:4049 次
发布时间:2019-05-25

本文共 2206 字,大约阅读时间需要 7 分钟。

python里的matplotlib是一个很强大的绘图软件包。可以绘制类似matlab和R软件效果的图样。这几天尝试着从原始数据得到一个。就用了这个软件包。效果还好。虽然软件很庞大很复杂,但是遇到的各种问题都还能比较好地解决。最后得到了我想要的结果。

代码如下:

01 #!/usr/bin/python
02 import numpy as NP
03 = NP.array([
04 [6.55,6.76,7.32,5.6,5.94,],
05 [0.01,0.01,0.04,0.02,0.11,],
06 [6.45,6.29,4.34,4.57,7.15,],
07 [8.73,10.67,6.9,8.25,8.53,],
08 [0.03,0.01,0.05,0.01,0.07,],
09 [1.36,1.41,0.8,0.98,1.36,],
10 [0,0,0,0,0.01,],
11 [2.09,2.93,1.94,1.96,3.56,],
12 [3.61,3.37,2.62,6.99,4.6,],
13 [6.08,7.04,4.72,4.78,7.2,],
14 [1.67,0.92,0.62,3.87,0.75,],
15 [0.01,0,0,0.11,0.18,],
16 [0.03,0,0.13,0.03,0.24,],
17 [1.66,1.8,1.81,1.81,2.12,],
18 [3.37,3.48,4.39,3.02,3.2,],
19 [4.77,4.91,8.62,5.35,4.68,],
20 [7.58,7.9,3.02,7.57,8.15,],
21 [7.59,7.79,9.92,8.17,7.61,],
22 [3.59,3.46,2.54,2.99,2.68,],
23 [2.51,3.82,4.57,2.56,3.19,],
24 [1.74,2.38,5.4,2.05,2.24,],
25 [4.71,3.05,5.12,2.73,4.18,],
26 [0.85,0.93,2.47,0.83,1.12,],
27 [11.62,12.01,10.43,12.49,12.42,],
28 [13.4,9.06,12.24,13.26,8.71,],
29 ])
30  
31 from matplotlib import pyplot as PLT
32 from matplotlib import cm as CM
33 from matplotlib import axes
34 # 设定一个图像,背景为白色。
35 fig = PLT.figure(facecolor='w')
36 #注意位置坐标,数字表示的是坐标的比例
37 ax1 = fig.add_subplot(2,1,1,position=[0.1,0.15,0.9,0.8])
38 #注意标记旋转的角度
39 ax1.set_xticklabels(['','A','B','C','D','E'], range(6), rotation=-45 )
40  
41 # select the color map
42 #可以有多种选择,这里我最终选择的是spectral,那个1000是热度标尺被分隔成多少块,数字越多,颜色区分越细致。
43 #cmap = CM.get_cmap('RdYlBu_r', 1000)
44 #cmap = CM.get_cmap('rainbow', 1000)
45 cmap = CM.get_cmap('spectral'1000)
46  
47 # map the colors/shades to your data
48 #那个vmin和vmax是数据矩阵中的最大和最小值。这个范围要与数据的范围相协调。
49 #那个aspect参数,对确定图形在整个图中的位置和大小有关系。上面的add_subplot中的position参数的数值要想有作用,这里的这个参数一定要选auto。
50 map = ax1.imshow(A, interpolation="nearest", cmap=cmap,aspect='auto', vmin=0,vmax=15)
51 #shrink是标尺缩小的比例
52 cb = PLT.colorbar(mappable=map, cax=None, ax=None,shrink=0.5)
53 cb.set_label('(%)')
54  
55 # plot it
56 PLT.show()

 

剩下一些比较简单的图形调整问题,就用gimp来搞定了。这些尚不能解决的问题包括:

1)纵坐标是每隔5行才出现一个数字。我想调成每行都显示,但是yticklabel里找了半天不知道怎么弄。

2)纵坐标在左边,不知道如何改到右边去。

3)不知道如何修改热度区间的位置,比如想把他挪到整个图形的最右上角去。

4)坐标的标签是一个数组,但是很奇怪第一个一定要是空的来占一个位置。不知道是为什么。

5)的label(那个带括号的百分号符)不知道怎样改变方向。

原文来自:http://ribozyme.i.sohu.com/blog/view/182128700.htm,

你可能感兴趣的文章
leetcode 535 TinyURL 的加密与解密 暴力 年轻人不讲武德—shooter7的博客
查看>>
课程设计(毕业设计)—基于机器学习KNN算法手写数字识别系统—计算机专业课程设计(毕业设计)
查看>>
leetcode1792第232场周赛第三题,以及二维数组根据某一列进行排序——优先队列
查看>>
学生网上选课管理系统的设计与实现—计算机类专业课程设计(毕业设计)
查看>>
新建动态web工程项目红叉报错,以及Could not publish server configuration for Tomcat v9.0 Server at localhost.
查看>>
机器学习SVM的车牌识别系统—计算机专业课程设计(毕业设计)
查看>>
leetcode 80. 删除有序数组中的重复项 II
查看>>
课程设计(毕业设计)—学生宿舍管理系统—计算机类专业
查看>>
毕业设计(课程设计)—SpringBoot网上订餐系统的设计与实现—计算机类专业课程设计(毕业设计)
查看>>
毕业设计(课程设计)—个人博客系统(微博)的设计与实现—计算机类专业课程设计(毕业设计)
查看>>
牛客(中兴捧月)—B-切绳子
查看>>
剑指Offer 13.机器人的运动范围——DFS和BFS
查看>>
Java中GUI编程总结—AWT中的Frame容器、panel面板、布局管理
查看>>
剑指offer12.矩阵中的路径—DFS+剪枝
查看>>
Java中GUI编程总结—事件监听、TextField监听、画笔、(鼠标、窗口、键盘)监听
查看>>
Java中GUI编程总结—Swing(窗口、面板、弹窗、标签、按钮、列表、文本框)
查看>>
Java中map容器分别根据键key和值value进行排序的总结
查看>>
剑指offer面试题16. 数值的整数次方——快速幂
查看>>
剑指 Offer 39. 数组中出现次数超过一半的数字——摩尔投票法
查看>>
python中SQLite3 数据库语句使用总结——增删改查
查看>>