一、Matplotlib的基础学习
Matplotlib
可能还有小伙伴不知道Matplotlib
是什么,下面是维基百科的介绍,Matplotlib官网
Matplotlib 是Python编程语言的一个绘图库及其数值数学扩展 NumPy。它为利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+向应用程序嵌入式绘图提供了面向对象的应用程序接口。
简单说就是画图的工具包,本篇博客将教会你如何使用Matplotlib简单绘图。
1. 首先,为了实际使用 Matplotlib,我们需要安装它。在cmd窗口运行 pip install matplotlib
命令
2. 下载完成后,我们在Jupyter notebook中导入Matplotlib,并使用它进行绘图
# matplotlib 的基础使用
import matplotlib.pyplot as plt # 导入matplotlib中的pyplot
plt.plot([1,2,3,4]) # 默认是y轴 显示图片如下
3. 使用fmt快捷参数,[1,2,3,4],[1,2,3,4]分别代表x,y轴坐标,r 代表红色,-代表虚线,.代表点号
plt.plot([1,2,3,4],[1,2,3,4],'r-.') # 用fmt参数(快捷参数)标识的
4. 使用关键字参数,ls代表线条类型,color代表显示颜色
plt.plot([1,2,3,4],[1,2,3,4],ls='--',color='b') # 用关键字标识 b代表blue
5. 指定x坐标 及颜色,更多配置信息可看Matplotlib官网
plt.plot([0,1,2,3,4],[1,2,3,4,5],'ro') # r:red 红色 o:circle 圆形
基础参数的设置
1. 图表的刻度与标题
# title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs)[source]
# 刻度与标题
plt.axis([0,5,0,20]) # axis() 指定刻度 [x最小 x最大 y最小 y最大]
plt.title('hello world') # 图表标题 注意中文会乱码,下面会有说明
plt.plot([1,2,3,4],'ro')
2. 结合numpy完成绘图 在一张图中绘制三种不同的趋势
# 结合numpy完成绘图 在一张图中绘制三种不同的趋势
import math
import numpy as np
x=np.arange(0,2.5,0.1)
y1=list(map(math.sin,math.pi*x))
y2=list(map(math.sin,math.pi*x+math.pi/2))
y3=list(map(math.sin,math.pi*x-math.pi/2))
plt.plot(x,y1,'b*')
plt.plot(x,y2,'g^')
plt.plot(x,y3,'ys')
# 也可以用点跟线来组成不同的线型
plt.plot(x,y1,'b--',x,y2,'g',x,y3,'r-.')
使用kwargs指定关键字参数
plt.plot(x,y1,'b--',x,y2,'g',x,y3,'r-.',linewidth=10) # linewidth代表线条的粗细度
3. 绘制多个图形
# 绘制多个图形
x=np.arange(0,2.5,0.1)
y1=np.sin(2*np.pi*x)
y2=np.cos(2*np.pi*x)
plt.subplot(121) # subplot代表子图 121代表第一行 两个图的第一个
plt.plot(x,y1,'b--')
plt.subplot(122) # subplot代表子图 121代表第一行 两个图的第二个
plt.plot(x,y1,'r--')
4. 设置画布figure的大小
# 设置画布figure的大小
plt.figure(figsize=(40,20)) # 设置画布大小
plt.subplot(121) # subplot代表子图 121代表第一行 两个图的第一个
plt.plot(x,y1,'b-.')
plt.subplot(122) # subplot代表子图 121代表第一行 两个图的第二个
plt.plot(x,y1,'r--')
5. 设置图标提示
plt.axis([0,5,0,20])
plt.title('hello fangxiang',fontsize=20,fontname='Times New Roman')
plt.xlabel('x')
plt.ylabel('y')
plt.text(1,1.5,'First') # 代表第一个点的位置
plt.text(2,4.5,'Second')
plt.text(3,9.5,'Third')
plt.text(4,16.5,'Fourth')
plt.plot([1,2,3,4],[1,4,9,16],'ro')
6. 中文文本解决方案,有三种解决方法
可看我这篇博客:修改matplotlib默认字体,这里不再过多叙述,
# 中文文本解决方案
import matplotlib.font_manager as fm
myfont=fm.FontProperties(fname='C:\Windows\Fonts\simsun.ttc') #找到自己电脑中对应字体
plt.axis([0,5,0,20])
plt.title('我的第一个图表',fontsize=20)
plt.xlabel('x')
plt.ylabel('y')
plt.text(1,1.5,'一')
plt.text(2,4.5,'二')
plt.text(3,9.5,'三')
plt.text(4,16.5,'四',fontproperties=myfont)
plt.plot([1,2,3,4],[1,4,9,16],'ro')
7. 加入公式 显示
# 加入公式
plt.axis([0,5,0,20])
plt.title('我的第一个图表',fontsize=20)
plt.xlabel('计数')
plt.ylabel('平均值')
plt.text(1,1.5,'一')
plt.text(2,4.5,'二')
plt.text(3,9.5,'三')
plt.text(4,16.5,'四')
# 指定图例 显示的文本(x,y,内容)
plt.text(1.1,12,r'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2})
plt.plot([1,2,3,4],[1,4,9,16],'ro')
8. 加入网格与图例
# 加入网格 grid()
# 加入图例 lengend()
plt.axis([0,5,0,20])
plt.title('我的第一个图表',fontsize=20)
plt.xlabel('计数')
plt.ylabel('平均值')
plt.text(1,1.5,'一')
plt.text(2,4.5,'二')
plt.text(3,9.5,'三')
plt.text(4,16.5,'四')
# 指定图例 显示的文本(x,y,内容)
plt.text(1.1,12,r'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2}) # alpha 指 透明度
plt.grid(True) #加入网格
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.plot([1,2,3,4],[0.8,3.5,8,15],'g*')
plt.plot([1,2,3,4],[1.2,4.5,9.8,17],'yo')
plt.legend(['series','second','third'],loc=0) # loc表示位置 由0-10组成
9. 保存为本地图片
# 保存为图片
plt.axis([0,5,0,20])
plt.title('我的第一个图表',fontsize=20)
plt.xlabel('计数')
plt.ylabel('平均值')
plt.text(1,1.5,'一')
plt.text(2,4.5,'二')
plt.text(3,9.5,'三')
plt.text(4,16.5,'四')
# 指定图例 显示的文本(x,y,内容)
plt.text(1.1,12,r'$y=x^2$',fontsize=20,bbox={'facecolor':'yellow','alpha':0.2})
plt.grid(True) #加入网格
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.plot([1,2,3,4],[0.8,3.5,8,15],'g*')
plt.plot([1,2,3,4],[1.2,4.5,9.8,17],'yo')
plt.legend(['series','second','third'],loc=0) # loc表示位置 由0-10组成
plt.savefig('chart.png') # 自定义文件名,地址在Jupyter的文件同目录下