欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()