python代码基础知识总结(四)(matplotlib库简单总结)
一、理论分析
搞过数学建模的都一定知道matlib,它的译文是矩阵实验室,主要功能就是具有强大的作图能力。那么python将这一个功能引入,就成为了matplotlib包。他是用于创建出版质量图表的绘图工具库,目的是为python创建一个Matlab式的绘图接口
二、代码实现
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
上面算是最常用的三个导入python包的方法了,其中这次要说的码头plotlib里的pyplot模块包含了常用的matplotlib API函数
我个人感觉这个模块最简单了,就是画图,核心给的是横坐标和纵坐标,就像我们自己做图一样,描点,连线。有x轴和y轴。我们话不多说,直接上代码。
import matplotlib.pyplot as plt
x = range(10) #x轴
y = [i*i for i in x] #y轴
plt.plot(x,y,'r--') #直线图,红色red,虚线--
plt.show() #展示
展示结果如图所示:
可以看到,真的很简单,但是我们可能对图像有更多的要求,比如我想要他有标题,x轴和y轴要有含义,去掉右边和上面的黑框等等,还有一次展示不同的图像,一个图像有多个曲线,加上曲线注释等等。我们下面会一一讲解这些内容。
1.1 一图显示多图
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100) #x轴
y1 = np.sin(x) #sinx
y2 = np.cos(x) #cosx
plt.plot(x,y1,label='y = sin(x)') #画图,添加sin坐标
plt.plot(x,y2,label='y = cos(x)') #画图,添加cos坐标
plt.xlabel('x') #x轴注释
plt.ylabel('y') #y轴注释
plt.axis([0,10,-1,1]) #x轴,y轴展示
plt.legend(loc=1) #坐标位置
plt.xticks([0,3.1416,6.2823,9.4248],['0','$\pi$','$2\pi$','$3\pi$']) #坐标点
plt.yticks([-1,0,1])
plt.show() #展示
plt.rcParams['font.sans-serif']=['SimHei'] #黑体
plt.rcParams['axes.unicode_minus']=False #负号
如果没加的话,可以看到
可以看到加入注释后,方框消失了,可以正常显示
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #黑体文字
plt.rcParams['axes.unicode_minus']=False #负号
x=np.linspace(-5,5,100)
y=np.sin(x)
plt.plot(x,y)
plt.annotate('Deep Learning',xy=(x[10],y[10]),xytext=(-3.25,0.75),
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.3')) #箭头标注
ax=plt.subplot(111)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.xticks([-4,-2,2,4],[-400000000000,-200000000000,200000000000,40000000000],
rotation=60)
plt.yticks([-1,0,1])
plt.show()
运行结果
weight1=[30,20,40,15,10]
names=['apple','samsung','OPPO','VIVO','mi']
# offset=[0.2,0,0,0.1,0.3]
plt.pie(weight1,autopct='%.2f%%',labels=names,
pctdistance=0.85,
radius=1.8,
textprops=dict(color='black'),
wedgeprops=dict(width=0.5))
plt.show()
#pctdistance 数字在饼图中的占比,radius半径为1.8,textprops文字的颜色,wedgeprops 空心的比重
运行结果如图
1.2 多图显示
import matplotlib.pyplot as plt
x = range(10)
y = [i*i for i in x]
z = [i**3 for i in x]
fig = plt.figure(figsize=(12,8))
ax1 = fig.add_subplot(221)
ax1.set_title('plt y1')
plt.xlabel('x')
plt.ylabel('y')
ax1.plot(x,y,c='r')
ax2 = fig.add_subplot(222)
ax2.set_title('plt y2')
plt.xlabel('t')
plt.ylabel('y')
ax2.plot(x,z,c='b')
plt.show()
图像如图所示。