返回 登录
1

Python matplotlib 数据可视化

图的基本结构
通常,使用 numpy 组织数据, 使用 matplotlib API 进行数据图像绘制。 一幅数据图基本上包括如下结构:

Data: 数据区,包括数据点、描绘形状
Axis: 坐标轴,包括 X 轴、 Y 轴及其标签、刻度尺及其标签
Title: 标题,数据图的描述
Legend: 图例,区分图中包含的多种曲线或不同分类的数据
其他的还有图形文本 (Text)、注解 (Annotate)等其他描述
详细的结构图如下图所示:

画法
按照绘图结构,可将数据图的绘制分为如下几个步骤:

导入 matplotlib 包相关工具包
准备数据,numpy 数组存储
绘制原始曲线
配置标题、坐标轴、刻度、图例
添加文字说明、注解
显示、保存绘图结果
导包

coding:utf-8

import numpy as np
import matplotlib.pyplot as plt
from pylab import *

准备数据

numpy 常用来组织源数据:

定义数据部分

x = np.arange(0., 10, 0.2)
y1 = np.cos(x)
y2 = np.sin(x)
y3 = np.sqrt(x)

绘制基本曲线

使用 plot 函数直接绘制上述函数曲线,可以通过配置 plot 函数参数调整曲线的样式、粗细、颜色、标记等:

绘制 3 条函数曲线

plt.plot(x, y1, color=’blue’, linewidth=1.5, linestyle=’-‘, marker=’.’, label=r’[Math Processing Error]’)
plt.plot(x, y2, color=’green’, linewidth=1.5, linestyle=’-‘, marker=’*’, label=r’[Math Processing Error]’)
plt.plot(x, y3, color=’m’, linewidth=1.5, linestyle=’-‘, marker=’x’, label=r’[Math Processing Error]’)

设置坐标轴

复制代码

坐标轴上移

ax = plt.subplot(111)
ax.spines[‘right’].set_color(‘none’) # 去掉右边的边框线
ax.spines[‘top’].set_color(‘none’) # 去掉上边的边框线

移动下边边框线,相当于移动 X 轴

ax.xaxis.set_ticks_position(‘bottom’)
ax.spines[‘bottom’].set_position((‘data’, 0))

移动左边边框线,相当于移动 y 轴

ax.yaxis.set_ticks_position(‘left’)
ax.spines[‘left’].set_position((‘data’, 0))

设置 x, y 轴的刻度取值范围

plt.xlim(x.min()*1.1, x.max()*1.1)
plt.ylim(-1.5, 4.0)

设置 x, y 轴的刻度标签值

plt.xticks([2, 4, 6, 8, 10], [r’2’, r’4’, r’6’, r’8’, r’10’])
plt.yticks([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], [r’-1.0’, r’0.0’, r’1.0’, r’2.0’, r’3.0’, r’4.0’])

设置标题、x轴、y轴

plt.title(r’[Math Processing Error]’, fontsize=19)
plt.xlabel(r’[Math Processing Error]’, fontsize=18, labelpad=88.8)
plt.ylabel(r’[Math Processing Error]’, fontsize=18, labelpad=12.5)
复制代码

设置文字描述、注解

在数据图中添加文字描述 text:

plt.text(4, 1.68, r’[Math Processing Error]’, color=’k’, fontsize=15)
plt.text(4, 1.38, r’[Math Processing Error]’, color=’k’, fontsize=15)
// 其中,r’……’ 语句表示使用 LaTex 公式符号.

在数据图中给特殊点添加注解 annotate:

复制代码

特殊点添加注解

plt.scatter([8,],[np.sqrt(8),], 50, color =’m’) # 使用散点图放大当前点
plt.annotate(r’[Math Processing Error]’, xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color=’#090909’, arrowprops=dict(arrowstyle=’->’, connectionstyle=’arc3, rad=0.1’, color=’#090909’))
“””
plt.annotate(‘%.4f’ % acc, xy=(thres, acc), xytext=(thres, acc+0.04), ha=’center’, color=’black’, arrowprops=dict(arrowstyle=’->’, color=’black’)) #在正上方添加注解
plt.annotate(‘%.4f’ % cov, xy=(thres, cov), xytext=(thres, cov-0.04), ha=’center’, color=’green’, arrowprops=dict(arrowstyle=’->’, color=’green’)) #在正下方添加注解, ha表示horizontalalignment(水平对齐)
“””
复制代码

设置图例

可使用如下两种方式,给绘图设置图例:
1: 在 plt.plot 函数中添加 label 参数后,使用 plt.legend(loc=’up right’)
2: 不使用参数 label, 直接使用如下命令:

plt.legend([‘cos(x)’, ‘sin(x)’, ‘sqrt(x)’], loc=’up right’)

loc 参数表示图例的位置,常见的位置参数如下:

评论