matplotlib.pyplot绘图包应用
程序员文章站
2022-03-21 14:28:54
...
第一步可以不创建画布,直接采用默认值,此处是利用numpy包创建数据
1.基本绘图
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['Simhei'] #设置中文字体
plt.rcParams['axes.unicode_minus']=False #显示负号
#创建画布 figsize:画布大小 有默认参数
plt.figure(figsize=(15,10),dpi=80)
#绘制 y=x^2的图像
#取点
#用等差数列取-5到5之间100个点
x = np.linspace(-5,5,100)
y = x**2
#指定当前x轴,y轴范围
plt.xlim(-5,5)
plt.ylim(0,10)
#设置x轴,y轴的刻度
plt.xticks([-4,0,4])
plt.yticks([0,5,10])
#添加x轴,y轴名称
plt.xlabel('加速度')
plt.ylabel('路程')
#添加图名
plt.title('一元二次方程')
#画图
#color:线的颜色 linestyle:线的样式 linewidth:线的粗细
#marker:线上点的形状 label:图例,必须和plt.legend()一起用
plt.plot(x,y,c='m',linestyle=':',linewidth=2,marker='*',markersize=10,label='y=x^2')
#添加图例的位置
plt.legend(loc='upper left') #把图例y=x^2放在图像左上角
#loc传参分别有:upper+(left center right) center+(left right) lower+(left center right)
#添加网格线
plt.grid()
#显示图像
plt.show()
2.画图进阶
import matplotlib.pyplot as plt
import numpy as np
#图中图是有y=sinx 和 y=cosx俩条曲线
#创建画布
plt.figure(figsize=(15,10),dpi=80)
#(1)取点
#x从[-Π,Π]取100个数
x = np.linspace(-np.pi,np.pi,100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.yticks([-1,0,1])
plt.xticks(([-np.pi,0,np.pi]))
plt.xlim([-3.8,3.8])
plt.ylim([-1.5,1.5])
#(2)画图
plt.plot(x,y1,label='y=sinx')
plt.plot(x,y2,label='y=cosx')
plt.legend(loc='upper right')
plt.show()
3.绘制子图
import matplotlib.pyplot as plt
import numpy as np
#设置子图的间距
plt.subplots_adjust(hspace=0.8,wspace=0.5)
#设置y轴位于x=0处
def set_axis():
# #设置坐标轴
ax = plt.gca()
# #去掉顶部和右边的坐标线
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# #将下面的轴线移到x=0位置
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
# #将下面的轴线移到y=0位置
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
#图像三行三列,在第一个位置画图
plt.subplot(3,3,1)
x1 = np.linspace(-5,5,100)
y1 = 5+0*x1
plt.xlim(-5,5)
plt.ylim(0,10)
plt.xticks([-5,0,5])
plt.yticks([5,10])
plt.title('y=5')
a=plt.plot(x1,y1,'r')
set_axis()
#图像三行三列,在第二个位置画图
plt.subplot(3,3,2)
x2 = np.linspace(-5,5,100)
y2 = x2
plt.title('y=x')
plt.xticks([-5,0,5])
plt.yticks([5,10])
plt.plot(x2,y2)
set_axis()
#图像三行三列,在第三个位置画图
plt.subplot(3,3,3)
x3 = np.linspace(-5,5,100)
y3 = x3**2
plt.title('y=x²')
plt.xticks([-5,0,5])
plt.yticks([9,16,25])
plt.plot(x3,y3,'k')
set_axis()
#图像三行三列,在第四个位置画图
plt.subplot(3,3,4)
x4 = np.linspace(-5,5,100)
y4 = x4**3
plt.title('y=x³')
plt.xticks([-5,0,5])
plt.yticks([27,64,125])
plt.plot(x4,y4,'b')
set_axis()
#图像三行三列,在第五个位置画图
plt.subplot(3,3,5)
x5 = np.linspace(-2*np.pi,2*np.pi,100)
y5 = np.sin(x5)
plt.title('y=sinx')
plt.xticks([-2*np.pi,0,2*np.pi])
plt.yticks([-1,1])
plt.plot(x5,y5,)
set_axis()
#图像三行三列,在第六个位置画图
plt.subplot(3,3,6)
x6 = np.linspace(-2*np.pi,2*np.pi,100)
y6 = np.cos(x6)
plt.title('y=cosx')
plt.xticks([-2*np.pi,0,2*np.pi])
plt.yticks([-1,1])
plt.plot(x6,y6)
set_axis()
#图像三行三列,在第七个位置画图
plt.subplot(3,3,7)
x7 = np.linspace(-5,1,100)
y7 = np.exp(x7)
plt.title('$y=e^{x}$')
plt.xticks([-5,1])
plt.yticks([0,np.exp(1)])
plt.plot(x7,y7)
set_axis()
#图像三行三列,在第八个位置画图
plt.subplot(3,3,8)
x8 = np.linspace(1/2,5,30)
y8 = np.log(x8)
plt.title('y=lnx')
plt.xticks([0,1/2,5])
plt.yticks([1,2])
plt.plot(x8,y8)
set_axis()
#图像三行三列,在第九个位置画图
plt.subplot(3,3,9)
x9 = np.linspace(0,5,100)
y9 = x9**(1/2)
plt.title('$y=\sqrt{x}$')
plt.xticks([0,5])
plt.yticks([1,2,3,4])
plt.plot(x9,y9)
set_axis()
plt.show()
4.其他图形
import numpy as np
import matplotlib.pyplot as plt
#1.画散点图
#y=sinx+cosx
x = np.linspace(-np.pi,np.pi,50)
y = np.cos(x)+np.sin(x)
plt.scatter(x,y,c='g')
plt.show()
#2.直方图
x = np.arange(1,6)
y = np.arange(3,8)
plt.bar(x,y)
plt.show()
#3.条形图
plt.barh(x,y)
plt.show()
#4.扇形图
plt.pie(x)
plt.show()
下一篇: php教程 如何修改变量的值