python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图

python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图 
#2018-03-28 14:47:19 March Wednesday the 13 week, the 087 day SZ SSMR
这篇文章结合Matplotlib的imshow()函数,讲述热图(斑图)绘制及相关参数基础知识
绘制2*3共6个子图,且图为空的代码如下:
# coding=utf-8
from matplotlib import pyplot as plt

fig = plt.figure()

ax1 = fig.add_subplot(231)
ax2 = fig.add_subplot(232)
ax3 = fig.add_subplot(233)
ax4 = fig.add_subplot(234) 
plt.grid(True)
ax5 = fig.add_subplot(235)
ax6 = fig.add_subplot(236)

plt.grid(True)
plt.show()

需要调用函数绘图,下面提几个重点知识:
    1.plot(x, y, marker='D')表示绘制折线图,marker设置样式菱形。
    2.scatter(x, y, marker='s', color='r')绘制散点图,红色正方形。
    3.bar(x, y, 0.5, color='c')绘制柱状图,间距为0.5,原色。
    4.hist(data,40,normed=1,histtype='bar',
                   facecolor='yellowgreen',alpha=0.75)直方图。
    5.设置x轴和y轴的坐标值:
      xlim(-2.5, 2.5) #设置x轴范围 ylim(-1, 1) #设置y轴范围
    6.显示中文和负号代码如下:
      plt.rcParams['font.sas-serig']=['SimHei'] #用来正常显示中文标签
      plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

# coding=utf-8
import numpy as np
from pylab import *
from matplotlib import pyplot as plt

x = [1, 2, 3, 4]
y = [3, 5, 10, 25]

#开启一个画图窗口,如果只有一个窗口,可以省略这句话。
fig = plt.figure()

#创建一个或多个子图(subplot绘图区才能绘图)
ax1 = fig.add_subplot(231) #有两行3列,共六个子图
plt.plot(x, y, marker='D') #绘实线图
plt.sca(ax1)        #选择第一个子图绘图
  
ax2 = fig.add_subplot(232)
plt.scatter(x, y, marker='s', color='r')  #绘制散点图
plt.sca(ax2)
plt.grid(True) #添加网格

ax3 = fig.add_subplot(233)
plt.bar(x, y, 0.5, color='c') #柱状图 width=0.5间距
plt.sca(ax3)

ax4 = fig.add_subplot(234) 
#高斯分布   
mean = 0  #均值为0   
sigma = 1 #标准差为1 (反应数据集中还是分散的值)  
data = mean+sigma*np.random.randn(10000)
#直方图
plt.hist(data,40,normed=1,histtype='bar',facecolor='yellowgreen',alpha=0.75)
plt.sca(ax4)

m = np.arange(-5.0, 5.0, 0.02)
n = np.sin(m)
ax5 = fig.add_subplot(235)
plt.plot(m, n)
plt.sca(ax5)

ax6 = fig.add_subplot(236)
xlim(-2.5, 2.5) #设置x轴范围
ylim(-1, 1)     #设置y轴范围
plt.plot(m, n)
plt.sca(ax6)
plt.grid(True)

plt.show()






二. imshow详解热图知识

Colormap:参数cmap用于设置热图的Colormap。
Colorbar:增加颜色类标的代码是plt.colorbar(),
下面这段代码是显示原图、灰度(gray)、和春夏秋冬的示例。
,X变量存储图像,可以是浮点型数组、unit8数组以及PIL图像,如果其为数组,则需满足一下形状:
    (1) M*N      此时数组必须为浮点型,其中值为该坐标的灰度;
    (2) M*N*3  RGB(浮点型或者unit8类型)
    (3) M*N*4  RGBA(浮点型或者unit8类型)
按照矩阵X进行颜色分布的。
[1, 2]    [深蓝, 浅蓝]
[3, 4]    [淡绿, 黄色]
[5, 6]    [橙红, 深红]
#coding=utf-8  
from matplotlib import pyplot as plt  
  
X = [[1,2],[3,4]]   

fig = plt.figure()
ax = fig.add_subplot(231)
ax.imshow(X)

ax = fig.add_subplot(232)
#参数cmap用于设置热图的Colormap。
ax.imshow(X, cmap=plt.cm.gray) #灰度

ax = fig.add_subplot(233)
im = ax.imshow(X, cmap=plt.cm.spring) #春
plt.colorbar(im)                

ax = fig.add_subplot(234)
im = ax.imshow(X, cmap=plt.cm.summer)
#Colorbar:增加颜色类标的代码是plt.colorbar(),
plt.colorbar(im, cax=None, ax=None, shrink=0.5) #长度为半

ax = fig.add_subplot(235)
im = ax.imshow(X, cmap=plt.cm.autumn)
plt.colorbar(im, shrink=0.5, ticks=[-1,0,1])

ax = fig.add_subplot(236)
im = ax.imshow(X, cmap=plt.cm.winter)
plt.colorbar(im, shrink=0.5)

plt.show()

百度经验提供一段代码,也不错,推荐大家学习。
注意:相当于在A~J和a~j的图像矩阵中,产生10*10的随机数,对矩阵进行颜色填充;只是在填充过程中,选择随机数的最大值和最小值进行标准化处理。
# coding=utf-8
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import cm 
from matplotlib import axes

def draw_heatmap(data,xlabels,ylabels):
    
    cmap=cm.get_cmap('rainbow',1000)
    figure=plt.figure(facecolor='w')
    ax=figure.add_subplot(1,1,1,position=[0.1,0.15,0.8,0.8])
    ax.set_yticks(range(len(ylabels)))
    ax.set_yticklabels(ylabels)
    ax.set_xticks(range(len(xlabels)))
    ax.set_xticklabels(xlabels)
    vmax=data[0][0]
    vmin=data[0][0]
    for i in data:
        for j in i:
            if j>vmax:
                vmax=j
            if j

你可能感兴趣的:(学习总结)