Matplotlib可视化基础知识

Matplotlib可视化

通过本手册,你将收获以下知识:
•matplotlib 及环境配置
•数据图的组成结构,与 matplotlib 对应的名称
•常见的数据绘图类型,与绘制方法

你可能需要以下的准备与先修知识:
•Python开发环境及matplotlib工具包
•Python基础语法
•Python numpy 包使用

1. matplotlib安装配置
linux可以通过以下方式进行安装matplotlib
sudo pip install numpy
sudo pip install scipy
sudo pip install matplotlib

windows环境推荐大家使用anaconda

2. 可视化的基本结构

通常,使用 numpy 组织数据, 使用 matplotlib API 进行数据图像绘制。 一幅数据图基本上包括如下结构:
•Data: 数据区,包括数据点、描绘形状
•Axis: 坐标轴,包括 X 轴、 Y 轴及其标签、刻度尺及其标签
•Title: 标题,数据图的描述
•Legend: 图例,区分图中包含的多种曲线或不同分类的数据

其他的还有图形文本 (Text)、注解 (Annotate)等其他描述
在这里插入图片描述

3. 画法
下面以常规图为例,详细记录作图流程及技巧。按照绘图结构,可将数据图的绘制分为如下几个步骤:
•导入 matplotlib 包相关工具包
•准备数据,numpy 数组存储
•绘制原始曲线
•配置标题、坐标轴、刻度、图例
•添加文字说明、注解
•显示、保存绘图结果

下面是一个包含cos、sin、sqrt函数的完整图像:

在这里插入图片描述

3.1. 导包
会用到 matplotlib.pyplot、pylab 和 numpy

#coding:utf-8
%matplotlib inline
import numpy as mp
import matplotlib.pyplot as plt
from pylab import *

3.2. 准备数据
numpy经常用来组织数据源

#定义数据bufen
x = np.arange(0,10,0,2)
y = np.cos(x)
z = np.sin(x)

3.3. 绘制基本曲线

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

# 绘制 3 条函数曲线
plt.plot(x, y1, color='blue', linewidth=1.5, linestyle='-', marker='.', label=r'$y = cos{x}$')
plt.plot(x, y2, color='green', linewidth=1.5, linestyle='-', marker='*', label=r'$y = sin{x}$')
plt.plot(x, y3, color='m', linewidth=1.5, linestyle='-', marker='x', label=r'$y = \sqrt{x}$')

输出结果:`
[<matplotlib.lines.Line2D at 0x106fc9250>]
在这里插入图片描述
2.3.1 关于颜色的补充

主要是color参数:
•r 红色
•g 绿色
•b 蓝色
•c cyan
•m 紫色
•y 土黄色
•k 黑色
•w 白色

3.3.2 linestyle参数
linestyle 参数主要包含虚线、点化虚线、粗虚线、实线,如下:
在这里插入图片描述
3.3 设置坐标轴
可通过如下代码,移动坐标轴 spines

#坐标轴上移
ax = plt.subplot(111)
ax.spines['right'].set_color('none')  #去掉右边的边框线
ax.spines['top'].set_color('none')   #去掉上边的边框线
ax.xaxis.set_ticks_position('bottom') #移动下边的边框线,相当于移动X轴
ax.spines['bottom'].set_position(('data',0))
# 移动左边边框线,相当于移动 y 轴
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))

在这里插入图片描述
可通过如下代码,设置刻度尺间隔 lim、刻度标签 ticks

# 设置 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 坐标轴和标题:

# 设置标题、x轴、y轴
plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$', fontsize=19)
plt.xlabel(r'$the \ input \ value \ of \ x$', fontsize=18, labelpad=88.8)
plt.ylabel(r'$y = f(x)$', fontsize=18, labelpad=12.5)

在这里插入图片描述
3.5设置文字描述,注释
可通过如下代码,在数据图中添加文字描述 text:

plt.text(4, 1.68, r'$x \in [0.0, \ 10.0]$', color='k', fontsize=15)
plt.text(4, 1.38, r'$y \in [-1.0, \ 4.0]$', color='k', fontsize=15)

在这里插入图片描述
可通过如下代码,在数据图中给特殊点添加注解 annotate:

# 特殊点添加注解
plt.scatter([8,],[np.sqrt(8),], 50, color ='m')  # 使用散点图放大当前点
plt.annotate(r'$2\sqrt{2}$', xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color='#090909', arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.1', color='#090909'))

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

plt.legend(['cos(x)', 'sin(x)', 'sqrt(x)'], loc='upper right')

在这里插入图片描述

完整的绘制程序

 #coding:utf-8

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

# 定义数据部分
x = np.arange(0., 10, 0.2)
y1 = np.cos(x)
y2 = np.sin(x)
y3 = np.sqrt(x)

# 绘制 3 条函数曲线
plt.plot(x, y1, color='blue', linewidth=1.5, linestyle='-', marker='.', label=r'$y = cos{x}$')
plt.plot(x, y2, color='green', linewidth=1.5, linestyle='-', marker='*', label=r'$y = sin{x}$')
plt.plot(x, y3, color='m', linewidth=1.5, linestyle='-', marker='x', label=r'$y = \sqrt{x}$')

# 坐标轴上移
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'])

# 添加文字
plt.text(4, 1.68, r'$x \in [0.0, \ 10.0]$', color='k', fontsize=15)
plt.text(4, 1.38, r'$y \in [-1.0, \ 4.0]$', color='k', fontsize=15)

# 特殊点添加注解
plt.scatter([8,],[np.sqrt(8),], 50, color ='m')  # 使用散点图放大当前点
plt.annotate(r'$2\sqrt{2}$', xy=(8, np.sqrt(8)), xytext=(8.5, 2.2), fontsize=16, color='#090909', arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.1', color='#090909'))

# 设置标题、x轴、y轴
plt.title(r'$the \ function \ figure \ of \ cos(), \ sin() \ and \ sqrt()$', fontsize=19)
plt.xlabel(r'$the \ input \ value \ of \ x$', fontsize=18, labelpad=88.8)
plt.ylabel(r'$y = f(x)$', fontsize=18, labelpad=12.5)

# 设置图例及位置
plt.legend(loc='up right')    
# plt.legend(['cos(x)', 'sin(x)', 'sqrt(x)'], loc='up right')

# 显示网格线
plt.grid(True)    

# 显示绘图
plt.show()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子私房菜

给小强一点爱心呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值