申明:本人博客为自己学习记录,本文学习内容主要来源以下两篇博客。
https://www.jianshu.com/p/78ba36dddad8
https://blog.csdn.net/lm_is_dc/article/details/81191207
1、基础知识
1.1 库
主要用到的两个库:
- numpy
- matplotlib.pyplot
1.2 图形组成标签
图片来源:https://www.jianshu.com/p/78ba36dddad8
几个重要的标签:
- Figure(图像窗口):Figure 是包裹 Axes、tiles、legends 等组件的最外层窗口。它其实是一个 Windows 应用窗口。
- Axes(轴域/子图):Axes 是带有数据的图像区域。一个 Figure 中可以有多个子图。
- Axis(轴):X Axis和Y Axis。
1.3 导入库
import numpy as npimport matplotlib.pyplot as plt
2、绘图
2.1 包含单条曲线的图
- 正比例函数
from matplotlib import pyplot as plt x=[1,2,3,4,5] y=[2,4,6,8,10] plt.figure() # 定义一个图像窗口 plt.plot(x,y) # 绘制曲线 plt.show() #显示图像
结果:
- 指数函数
import numpy as np from matplotlib import pyplot as plt x1=np.arange(-np.pi,np.pi,0.01) # y1=np.power(x1,2) #指数函数 y1=x1**2 #指数函数(同上) plt.figure() # 定义一个图像窗口 plt.plot(x1,y1) # 绘制曲线 plt.show() #显示图像
结果:
2.2 包含多条曲线的图
-
连续调用多次plot函数
import numpy as np from matplotlib import pyplot as plt x=[1,2,3,4,5] y=[2,4,6,8,10] x1=np.arange(-np.pi,np.pi,0.01) # y1=np.power(x1,2) #指数函数 y1=x1**2 #指数函数(同上) plt.figure() # 定义一个图像窗口 plt.plot(x,y) # 绘制曲线y plt.plot(x1,y1) # 绘制曲线y1 plt.show() #显示图像
结果:
- 也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线
import numpy as np from matplotlib import pyplot as plt x=[1,2,3,4,5] y=[2,4,6,8,10] x1=np.arange(-np.pi,np.pi,0.01) # y1=np.power(x1,2) #指数函数 y1=x1**2 #指数函数(同上) plt.figure() # 定义一个图像窗口 plt.plot(x,y,x1,y1) # 绘制曲线y,y1, 注意顺序 #plt.plot(x1,y1) # 绘制曲线y1 plt.show() #显示图像
2.3 将多个曲线图绘制在一个Figure(图像窗口)区域中:对象形式创建表图
a=plt.subplot(row,col,loc) 创建曲线图 a.plot(x,y) 绘制曲线图
实例:
import numpy as np from matplotlib import pyplot as plt x=[1,2,3,4,5] y=[2,4,6,8,10] x1=np.arange(-np.pi,np.pi,0.01) # y1=np.power(x1,2) #指数函数 y1=x1**2 #指数函数(同上) x2=np.linspace(-np.pi,np.pi,5) 、 y2=np.sin(x) plt.figure() # 定义一个图像窗口 a1=plt.subplot(2,2,1) #创建曲线图 a1.plot(x,y) #绘制曲线图 a2=plt.subplot(2,2,2) #创建曲线图 a2.plot(x1,y1) # 绘制曲线 a3=plt.subplot(223) #创建曲线图 可以省略逗号 a3.plot(x2,y2) # 绘制曲线 plt.show() #显示图像
结果:
2.4 网格线gride
参数:
- axis
- color:支持十六进制颜色
- linestyle: – -. :
- alpha :
设置网格:
- 直接设置:plt.grid()
- 使用对象设置:a=plt.subplot(221) a.grid()
import numpy as np from matplotlib import pyplot as plt x=np.linspace(-np.pi,np.pi,100) y=np.sin(x) a1=plt.subplot(221) a1.grid() a1.plot(x,y) a2=plt.subplot(222) a2.grid() a2.plot(x,y) a3=plt.subplot(223) a3.grid() a3.plot(x,y) a4=plt.subplot(224) a4.grid() a4.plot(x,y) plt.show() #显示图像
结果:
2.5 坐标轴界限
- 修改x,y轴刻度值
plt.axis([xmin,xmax,ymin,ymax])
例如:plt.axis([-4,4,-2,2])
- 关闭坐标轴
plt.axis('off')
- 设置画布比例
plt.figure(figsize=(a,b))
参数:
- a:x刻度比例;
- b:y刻度比例
- (2:1)表示x刻度显示为y刻度显示的2倍 。
- xlim方法和ylim方法
可以通过plt的xlim(xmin,xmax),ylim方法设置坐标轴范围;
plt.xlim(-6,6) plt.ylim(-2,2)
- 通过对象的方式设置x,y轴的刻度值范围 ax.set_xlim(a,b)
ax1=plt.subplot(111) ax1.set_xlim(-4,4) ax1.set_ylim(-2,2)
2.6 坐标轴标签
- color 标签颜色
- fontsize 字体大小
- rotation 旋转角度
- plt的xlabel方法和ylabel方法
import numpy as np from matplotlib import pyplot as plt x=np.linspace(-np.pi,np.pi,100) y=np.cos(x) plt.title('tittle') plt.ylabel('yyy',fontsize=16,rotation=90,color='r') plt.xlabel('xxx',fontsize=16) plt.plot(x,y) plt.show()
结果:
- 对象方法set_xlabel/ylabel()
2.6.1 显示坐标轴中文标签
设置参数:fontproperties
import numpy as np from matplotlib import pyplot as plt x=np.linspace(-np.pi,np.pi,100) y=np.cos(x) ax=plt.subplot(111) ax.set_xlabel('x轴',fontproperties='KaiTi',fontsize=18) #对象方法 ax.set_ylabel('y轴',fontproperties='KaiTi',fontsize=18) ax.set_title('标题',fontproperties='KaiTi',fontsize=16) ax.plot(x,y) plt.show()
2.7、 标题
- plt.title()方法
- ax.set_title()方法
2.8、图例
2.8.1 legend方法
两种传参方法:
- - 分别在plot函数中增加label参数,再调用plt.legend()方法显示
x=np.linspace(0,10,30) y=x ** 2 plt.plot(x,y,label='aaa') #参数传递方法1,绘制曲线 plt.plot(x+1,y-1,label='bbb') plt.legend()
- - 直接在legend方法中传入字符串列表
import numpy as np from matplotlib import pyplot as plt x=np.linspace(0,10,30) y=x ** 2 plt.plot(x,y) plt.plot(x+1,y-1) plt.legend(['a','b']) plt.show()
2.8.2 legend的参数
-
loc参数 : 用于设置图例标签的位置,一般在legend函数内
-
matplotlib已经预定义好几种数字表示的位置,见下表:
例如:plt.legend(['aaa','bbb'],loc=5)
loc参数可以是2元素的元组,表示图例左下角的坐标:
- [0,0] 左下
- [0,1] 左上
- [1,0] 右下
-
[1,1] 右上
-
ncol参数 : 控制图例中有几列,在legend中设置ncol。
例如:plt.legend(['aaa','bbb'],loc=[1,1],ncol=2)
(ncol:两行)
2.9、 保存图片
使用figure对象的savefig函数来保存图片:
- 使用plt进行绘图。。。。。。。然后保存图片
- 然后保存图片 plt.savefig(filename='./111.jpg',dpi=500)
参数说明:
- 图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
- dpi : 图像分辨率(每英寸点数),默认为100 ;
- facecolor :图像的背景色,默认为“w”(白色);
读取图片:
img=plt.imread('./111.jpg')
plt.imshow(img)
plt.show()
为什么没有线了!!!
3、设置plot的风格和样式
未完、、、、