使用python的matplotlib包绘图,分为以下部分。
- 基础知识
- 常见图形 与安装导入包
- 列表绘图步骤
- 多图绘制
- 数组绘图
一、绘制基础知识
一些绘图基础知识
- 画板figure,画纸Sublpot画质,可多图绘画
- 画纸上最上方是标题title,用来给图形起名字
- 坐标轴Axis,横轴叫x坐标轴label,纵轴叫y坐标轴ylabel
- 图例Legend 代表图形里的内容
- 网格Grid,图形中的虚线,True显示网格
- 点 Markers:表示点的形状。
二、常用图形
基本的视觉元素有三种:点、线、柱状。
- 对于数值类型,用点来进行可视化。例如想要知道学生为某科课程花费的时间和考试成绩两者之间的关系,可以把每个学生的数据绘制一个点,绘制出散点图 scatter plot,可以查看两者之间的相关性。
- 对于时间序列的数据类型,用线条来进行可视化。用线条将相关的数据点连接在一起,帮助我们观察随着时间的变化数据的变化趋势,这样的图叫做折线图line plot。
- 对于分类数据,需要查看数据是如何在各个类别之间分布的,可以使用柱状图 bar plot。
- 用来表示第三个维度时,可以使用颜色。一般很难在二维平面上表示三维数据,这时可以使用颜色视觉元素。最典型是热图heatmap,通过用渐进颜色显示用户热衷的区域或所在地理区域的图。
#导入matplotlib的pyplot模块
import matplotlib.pyplot as plt
三、列表绘图步骤
1、基础绘图步骤
2、绘图属性设置
3、在图片上添加文本
代码:
#1 基础绘图
#第1步:定义x和y坐标轴上的点 x坐标轴上点的数值
x=[1, 2, 3, 4]
#y坐标轴上点的数值
y=[1, 4, 9, 16]
#第2步:使用plot绘制线条第1个参数是x的坐标值,第2个参数是y的坐标值
plt.plot(x,y)
#第3步:显示图形
plt.show()
#2 定义绘图属性
'''
color:线条颜色,值r表示红色(red)
marker:点的形状,值o表示点为圆圈标记(circle marker)
linestyle:线条的形状,值dashed表示用虚线连接各点
'''
plt.plot(x, y, color='r',marker='o',linestyle='dashed')
#plt.plot(x, y, 'ro')
'''
axis:坐标轴范围
语法为axis[xmin, xmax, ymin, ymax],
也就是axis[x轴最小值, x轴最大值, y轴最小值, y轴最大值]
'''
plt.axis([0, 6, 0, 20])
plt.show()
#3 给图片提阿甲注释和标题等
#第1步:定义x和y坐标轴上的点 x坐标轴上点的数值
x=[1, 2, 3, 4]
#y坐标轴上点的数值
y=[1, 4, 9, 16]
#第2步:使用plot绘制线条 第1个参数是x的坐标值,第2个参数是y的坐标值
plt.plot(x,y)
#添加文本 #x轴文本
plt.xlabel('x坐标轴')
#y轴文本
plt.ylabel('y坐标轴')
#标题
plt.title('标题')
#添加注释 参数名xy:箭头注释中箭头所在位置,参数名xytext:注释文本所在位置,
#arrowprops在xy和xytext之间绘制箭头, shrink表示注释点与注释文本之间的图标距离
plt.annotate('我是注释', xy=(2,5), xytext=(2, 10),
arrowprops=dict(facecolor='black', shrink=0.01),
)
#第3步:显示图形
plt.show()
四、多图绘制
如何使用Python创建多个画板和画纸来绘制多幅图,如果事先不声明画板画板,默认是创建一个画板一个画纸
- 使用figure()方法创建画板1
- 使用subplot()方法创建画纸,并选择当前画纸并绘图
- 同样用subplot()方法选择画纸并绘图
- 最后显示图形
绘制多个图形
subplot()方法里面传入的三个数字 前两个数字代表要生成几行几列的子图矩阵,第三个数字代表选中的子图位置 2行1列的图 (2,1,选择1或者2画纸) subplot(2,1,1)生成一个2行1列的子图矩阵,当前是第一个子图
代码:
#创建画板1
fig = plt.figure(1) #如果不传入参数默认画板1
#第2步创建画纸,并选择画纸1
ax1=plt.subplot(2,1,1)
#在画纸1上绘图
plt.plot([1, 2, 3])
#选择画纸2
ax2=plt.subplot(2,1,2)
#在画纸2上绘图
plt.plot([4, 5, 6])
#显示图像
plt.show()
五、数组绘图
使用数组进行绘图:
上面部分我们给图形传入的数据是列表类型的,但是如果绘制图形只允许传入列表的话,绘制图形会变得很麻烦,所以,我们一般传入的是numpy的数组,实质上所有传入数据的类型在matplotlib内部处理时都会转化为numpy数组类型。接下来看如何使用数组进行绘图:这里用一维数组来绘制多个折线图。
- 第一步,要导入numpy包,再用numpy的一维数组生成一个等差数组,用arange()方法。本例数组中的最小值为0,最大值为5,后一个数据比前一个大0.2。
- 第二步,定义三个折线图的坐标值,分别用x1,x2,x3表示三个坐标轴上x轴的数值,用y1,y2,y3表示y轴上的数值,这些坐标值都是一维数组。
- 第三步,绘制出图形
数组生成使用文档:
numpy.arange - NumPy v1.17 Manualdocs.scipy.org/doc/numpy/reference/generated/numpy.arange.html
python运算符文档:
Python3 运算符 | 菜鸟教程www.runoob.com/python3/python3-basic-operators.html
代码:
#多图绘制
#导入包numpy
import numpy as np
#定义一维数组
t = np.arange(0, 5, 0.2)
#使用数组同时绘制多个线性
#线条1
x1=y1=t
#线条2
x2=x1
y2=t**2
#线条3
x3=x1
y3=t**3
#使用plot绘制线条
linesList=plt.plot(x1, y1,
x2, y2,
x3, y3 )
#用setp方法可以同时设置多个线条的属性
plt.setp(linesList, color='r')
plt.show()
print('返回的数据类型',type(linesList))
print('数据大小:',len(linesList))