python plt包_用python的matplotlib包绘制热度图

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

代码如下: #!/usr/bin/python

import numpy as NP

A = NP.array([

[6.55,6.76,7.32,5.6,5.94,],

[0.01,0.01,0.04,0.02,0.11,],

[6.45,6.29,4.34,4.57,7.15,],

[8.73,10.67,6.9,8.25,8.53,],

[0.03,0.01,0.05,0.01,0.07,],

[1.36,1.41,0.8,0.98,1.36,],

[0,0,0,0,0.01,],

[2.09,2.93,1.94,1.96,3.56,],

[3.61,3.37,2.62,6.99,4.6,],

[6.08,7.04,4.72,4.78,7.2,],

[1.67,0.92,0.62,3.87,0.75,],

[0.01,0,0,0.11,0.18,],

[0.03,0,0.13,0.03,0.24,],

[1.66,1.8,1.81,1.81,2.12,],

[3.37,3.48,4.39,3.02,3.2,],

[4.77,4.91,8.62,5.35,4.68,],

[7.58,7.9,3.02,7.57,8.15,],

[7.59,7.79,9.92,8.17,7.61,],

[3.59,3.46,2.54,2.99,2.68,],

[2.51,3.82,4.57,2.56,3.19,],

[1.74,2.38,5.4,2.05,2.24,],

[4.71,3.05,5.12,2.73,4.18,],

[0.85,0.93,2.47,0.83,1.12,],

[11.62,12.01,10.43,12.49,12.42,],

[13.4,9.06,12.24,13.26,8.71,],

])

from matplotlib import pyplot as PLT

from matplotlib import cm as CM

from matplotlib import axes

# 设定一个图像,背景为白色。

fig = PLT.figure(facecolor='w')

#注意位置坐标,数字表示的是坐标的比例

ax1 = fig.add_subplot(2,1,1,position=[0.1,0.15,0.9,0.8])

#注意标记旋转的角度

ax1.set_xticklabels(['','A','B','C','D','E'], range(6), rotation=-45 )

# select the color map

#可以有多种选择,这里我最终选择的是spectral,那个1000是热度标尺被分隔成多少块,数字越多,颜色区分越细致。

#cmap = CM.get_cmap('RdYlBu_r', 1000)

#cmap = CM.get_cmap('rainbow', 1000)

cmap = CM.get_cmap('spectral', 1000)

# map the colors/shades to your data

#那个vmin和vmax是数据矩阵中的最大和最小值。这个范围要与数据的范围相协调。

#那个aspect参数,对确定图形在整个图中的位置和大小有关系。上面的add_subplot中的position参数的数值要想有作用,这里的这个参数一定要选auto。

map = ax1.imshow(A, interpolation="nearest", cmap=cmap,aspect='auto', vmin=0,vmax=15)

#shrink是标尺缩小的比例

cb = PLT.colorbar(mappable=map, cax=None, ax=None,shrink=0.5)

cb.set_label('(%)')

# plot it

PLT.show()

heatmap.jpg

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

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

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

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

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

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

原文来自:http://ribozyme.i.sohu.com/blog/view/182128700.htm,有兴趣的欢迎加入BioASK 讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值