一、Matplotlib基础
1、Matplotlib介绍
Matplotlib是python最著名的绘图库,由各种可视化类构成。
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
我们可以提前先看一个柱状效果图:
import numpy as np
import matplotlib.pyplot as plt # 导入库
N = 5
menMeans = (20,35,30,35,27) #数据值
womenMeans = (25,32,34,20,25)
menStd =(2,3,4,1,2)
womenStd = (3,5,2,3,3)
ind = np.arange(N) #将X轴分为组
width = 0.35 #柱状图的宽度
p1=plt.bar(ind,menMeans,width,yerr=menStd)
p2=plt.bar(ind,womenMeans,width,bottom=menMeans,yerr=womenStd) # p2在p1柱状图上累加
plt.ylabel("Scores") # y轴标签
plt.title("Scores by group and gender") # 图表标题
plt.xticks(ind,("G1","G2","G3","G4","G5")) # x轴分组标签
plt.yticks(np.arange(0,81,10))
plt.legend((p1[0],p2[0]),("Men","Women")) # 图例
plt.show()
显示如下:
2、快速绘图
1、Matplotlib中函数库通过如下语句载入:
import matplotlib.pyplot as plt # 导入库
2、调用figure创建一个绘图对象,通过figsize参数可以指定绘图对象的宽和高,也可以不创建绘图对象直接调用plot函数直接绘图,matplotlib会自动创建一个绘图对象。
plt.figure(figsize=(8,4))
3、plot函数调用方式灵活,使用关键字参数指定各种属性:
- label:给所绘制的曲线定义名字一个,此名字在图示(legend)中显示。只要在字符串前后添加“$”符号,matplotlib就会使用内嵌的latex引擎绘制的数学公式。
- color:指定曲线的颜色
- linewidth:指定曲线的宽度
- 参数“b–”指定曲线的颜色和线型
可通过一系列函数设置对象的各个属性:
-
xlabel、ylabel:设置x、y轴的文字
-
title:设置图标的标题
-
ylim:设置y轴的范围
-
legend:图例显示
-
plt.show():显示出绘图对象
-
可以调用plt.savefig()将当前的Figure对象保存成图像文件,图像格式可以设置png:,dpi:分辨率
plt.savefig("test.png",dpi=120)
快速绘图示例:
import numpy as np
import matplotlib.pyplot as plt # 导入库#
x = np.linspace(0,10,500) #数据准备 x为500个数,数据密集,图像光滑
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize=(8,6)) #设置绘图的宽、高
# 设置曲线属性
plt.plot(x,y,"r-",label="$sin(x)$",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$",linewidth=2)
plt.xlabel("Time(s)") # x轴文字
plt.ylabel("Volt") # y轴文字
plt.title("Pyplot First Example") # 图表标题
plt.ylim(-1.2,1.2) #y值范围
plt.legend() #图例显示 label
plt.show()
#plt.savefig("test1.png",dpi=120) #在同目录下生成png文件
4、 matplotlib基础图标如下:
5、
- 可以用子图来将图样(plot)放在均匀的坐标网络中。
- plt.subplot(nrows,ncols,plot_number),用subplot函数时,需要指明网格的行列数量,以及你希望将图样放在哪一个网络区域中。
下面将以上两个图例整合到一张图:
import numpy as np
import matplotlib.pyplot as plt # 导入库#
x = np.linspace(0,10,500) #数据准备
y = np.sin(x)
z = np.cos(x**2)
N = 5
menMeans = (20,35,30,35,27) #数据值
womenMeans = (25,32,34,20,25)
menStd =(2,3,4,1,2)
womenStd = (3,5,2,3,3)
ind = np.arange(N) #将X轴分为组
width = 0.35 #柱状图的宽度
plt.subplot(2,1,1)
plt.bar(ind,menMeans,width,yerr=menStd,label="Men")
plt