一. Matplotlib简单回顾
Matplotlib是Python最著名的2D绘图库,该库仿造Matlab提供了一整套相似的绘图函数,用于绘图和绘表,强大的数据可视化工具和做图库,适合交互式绘图,图形美观。
首先,通过一段代码给大家回顾下Matplotlib绘图知识。绘制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)
- 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 -*-
# @Time : 2018/3/17 16:18
# @Author : Barry
# @Email : s.barry1994@foxmail.com
# @File : imshow_heatmap.py
# @Software: PyCharm Community Edition
import numpy as np
from pylab import *
from matplotlib import pyplot as plt
x = [1, 2, 3, 4]
y = [3, 5, 10, 25]
# 创建Figure
fig = plt.figure()
# 创建一个或多个子图(subplot绘图区才能绘图)
ax1 = fig.add_subplot(231)
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()
输出结果如下图所示:
Matplotlib强推博客:
http://www.cnblogs.com/zhizhan/p/5615947.html
http://blog.csdn.net/jinlong_xu/article/details/70183377
二. imshow详解热图知识
热图(heatmap)是数据分析的常用方法,通过色差、亮度来展示数据的差异、易于理解。Python在Matplotlib库中,调用imshow()函数实现热图绘制。
参考资料:http://matplotlib.org/users/image_tutorial.html
源码介绍如下图所示:
imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, hold=None, data=None, **kwargs)
其中,X变量存储图像,可以是浮点型数组、unit8数组以及PIL图像,如果其为数组,则需满足一下形状:
(1) M*N 此时数组必须为浮点型,其中值为该坐标的灰度;
(2) M*N*3 RGB(浮点型或者unit8类型)
(3) M*N*4 RGBA(浮点型或者unit8类型)