天天看点

matplotlib绘制数学曲线python matplotlib绘制数学曲线

python matplotlib绘制数学曲线

配套B站视频 https://www.bilibili.com/video/av83962883/

一.绘图实现三步

简单实现绘图

# 1.导包
import numpy as np
import matplotlib.pyplot as plt


#2.数据
x = np.linspace(-np.pi, np.pi, 1000)
y_sin = np.sin(x)

#3.绘图
plt.plot(x, y_sin)
plt.show()
           
matplotlib绘制数学曲线python matplotlib绘制数学曲线

二.图形元素设置

三大步,七小步绘制完整图形

#1.导包
import numpy as np
import matplotlib.pyplot as plt

#2.数据    
x = np.linspace(-np.pi, np.pi, 1000,)
y_sin = np.sin(x)


#3.绘图
#3.3设置画布尺寸
plt.figure(figsize=(10,5),dpi=70)    #设置尺寸

#3.1绘制曲线
plt.plot(x, y_sin,linestyle="-",color="blue",linewidth=2, label="$sin(x)$") #linestyle->ls,color->c,linewidth->lw

#3.4标题设置
plt.xlabel("X")                #x轴标题
plt.ylabel("Y")              #y轴标题
plt.title("Sin(x)-function")  #图标题

#3.5轴设置
plt.xlim((-3.5,3.5))    #设置x轴范围  注意将数据放在元组里
plt.xticks(np.linspace(-3.5,3.5,7))# 将-3.5,3.5区间,用7根线分成6份
plt.ylim((-1.2,1.2))           #设置y轴范围
plt.yticks(np.linspace(-1,1,5)) #y轴区间 分成4份

# 3.6网格
plt.grid(True,which='major', c='gray', ls='-.', lw=1, alpha=0.2)

#3.7显示标签
plt.legend(loc="upper left")

#3.2 展示
plt.show()
           
matplotlib绘制数学曲线python matplotlib绘制数学曲线

三.刻度及轴位置设置

1.轴放在 0,0 位置

2.x轴刻度 变成 π的形式

#1.导包
import numpy as np
import matplotlib.pyplot as plt

#2.数据    
x = np.linspace(-np.pi, np.pi, 1000,)
y_sin = np.sin(x)


#3.绘图
#3.3设置画布尺寸
plt.figure(figsize=(10,5),dpi=70)    #设置尺寸

#3.1绘制曲线
plt.plot(x, y_sin,linestyle="-",color="blue",linewidth=2, label="$sin(x)$") #linestyle->ls,color->c,linewidth->lw

#3.4标题设置
# plt.xlabel("X")                #x轴标题
# plt.ylabel("Y")              #y轴标题
plt.title("Sin(x)-function")  #图标题

#3.5轴设置

#3.5.1 轴位置   **
ax = plt.gca()  #获取轴对象

ax.xaxis.set_ticks_position("bottom")  #x轴线,设置刻度线位置,此处设置刻度线在spine中的bottom线
ax.yaxis.set_ticks_position("left")  #y轴线,设置刻度线位置,此处设置刻度线在spine中的bottom线

ax.spines["bottom"].set_position(("data",0))  #将bottom线的位置设置为数据为0的位置
ax.spines["left"].set_position(("data",0))  #将left线的位置设置为数据为0的位置
ax.spines["top"].set_color("none")  #将top线的颜色设置为无
ax.spines["right"].set_color("none")  #将right线的颜色设置为无

#3.5.2轴刻度
plt.xlim((-3.5,3.5))    #设置x轴范围  注意将数据放在元组里
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r"$-\pi$",r"$-\pi/2$",r"$0$",r"$\pi/2$",r"$\pi$"])#*改成π值*

plt.ylim((-1.2,1.2))           #设置y轴范围
plt.yticks(np.linspace(-1,1,9)) #y轴区间 分成4份  #*改成8份*


# 3.6网格
plt.grid(True,which='major', c='gray', ls='-.', lw=1, alpha=0.2)

#3.7显示标签
plt.legend(loc="upper left")

#3.2 展示
plt.show()
           
matplotlib绘制数学曲线python matplotlib绘制数学曲线

四.创建有箭头新轴 图形

1.创建新轴

2.添加箭头

3.显示中文字符

#1.导包
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题


#2.数据
x = np.linspace(-np.pi, np.pi, 1000,)
y_sin = np.sin(x)


#3.绘图
#3.1设置画布尺寸
fig=plt.figure(figsize=(10,5))    #设置尺寸  ***

#3.2轴设置
#3.2.1 轴位置   **
ax = axisartist.Subplot(fig, 111)  #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax)#将绘图区对象添加到画布中

ax.axis[:].set_visible(False)#通过set_visible方法设置绘图区所有坐标轴隐藏

ax.axis["x"] = ax.new_floating_axis(0,0)#ax.new_floating_axis代表添加新的坐标轴
ax.axis["x"].set_axisline_style("->", size = 1.0)#给x坐标轴加上箭头

ax.axis["y"] = ax.new_floating_axis(1,0)#添加y坐标轴,且加上箭头
ax.axis["y"].set_axisline_style("-|>", size = 1.0) #实体箭头

ax.axis["x"].set_axis_direction("top")#设置x、y轴上刻度显示方向
ax.axis["y"].set_axis_direction("left")

#3.2.2轴刻度
plt.xlim((-3.5,3.5))    #设置x轴范围  注意将数据放在元组里
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r"$-\pi$",r"$-\pi/2$",r"$0$",r"$\pi/2$",r"$\pi$"])#*改成π值*

plt.ylim((-1.2,1.2))           #设置y轴范围
plt.yticks(np.linspace(-1,1,5)) #y轴区间 分成4份

# 3.3网格
plt.grid(True,which="major", color="gray", linestyle="--", linewidth=1, alpha=0.2)

#3.4绘制曲线
plt.plot(x, y_sin,linestyle="-",color="blue",linewidth=2, label="$sin(x)$") #linestyle->ls,color->c,linewidth->lw


# 3.5标题设置
# plt.xlabel("X")                #x轴标题 **  ***
# plt.ylabel("Y")              #y轴标题  **   ***
# plt.title("Sin(x)-function")  #图标题
plt.title("Sin(x)-正弦函数")  #图标题

#3.6显示标签
plt.legend(loc="upper left")

#3.7 展示
plt.show()
           
matplotlib绘制数学曲线python matplotlib绘制数学曲线

五.对所绘制的曲线优化

1.绘制标注点

2.绘制标注线

3.写注释文本

#1.导包
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题


#2.数据

x = np.linspace(-np.pi, np.pi, 1000,)
y_sin = np.sin(x)

#3.绘图
#3.1设置画布尺寸
fig=plt.figure(figsize=(10,5))    #设置尺寸  ***

#3.2轴设置
#3.2.1 轴位置   **
ax = axisartist.Subplot(fig, 111)  #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax)#将绘图区对象添加到画布中

ax.axis[:].set_visible(False)#通过set_visible方法设置绘图区所有坐标轴隐藏

ax.axis["x"] = ax.new_floating_axis(0,0)#ax.new_floating_axis代表添加新的坐标轴
ax.axis["x"].set_axisline_style("->", size = 1.0)#给x坐标轴加上箭头

ax.axis["y"] = ax.new_floating_axis(1,0)#添加y坐标轴,且加上箭头
ax.axis["y"].set_axisline_style("-|>", size = 1.0) #实体箭头

ax.axis["x"].set_axis_direction("top")#设置x、y轴上刻度显示方向
ax.axis["y"].set_axis_direction("left")

#3.2.2轴刻度
plt.xlim((-3.5,3.5))    #设置x轴范围  注意将数据放在元组里
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r"$-\pi$",r"$-\pi/2$",r"$0$",r"$\pi/2$",r"$\pi$"])#*改成π值*

plt.ylim((-1.2,1.2))           #设置y轴范围
plt.yticks(np.linspace(-1,1,5)) #y轴区间 分成4份

# 3.3网格
plt.grid(True,which="major", color="gray", linestyle="--", linewidth=1, alpha=0.2)

#3.4绘制曲线

#3.4.1绘制曲线
plt.plot(x, y_sin,linestyle="-",color="blue",linewidth=2, label="$sin(x)$")  #正弦函数


#3.4.2标注
t = np.pi/3

plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=1.5, linestyle="--")
plt.plot([0,t],[np.sin(t),np.sin(t)], color ='red', linewidth=1.5, linestyle="--")

plt.scatter(t,np.sin(t), 50, color ='red')

plt.annotate(r'$\sin(\frac{\pi}{3})=\frac{\sqrt{3}}{2}$',
             xy=(t, np.sin(t)), xycoords='data',
             xytext=(+10, +30), textcoords='offset points', fontsize=16,
             arrowprops=dict(arrowstyle="-|>", connectionstyle="arc3,rad=0.6"))


# 3.5标题设置
# plt.xlabel("X")                #x轴标题 **  ***
# plt.ylabel("Y")              #y轴标题  **   ***
# plt.title("Sin(x)-function")  #图标题
plt.title("Sin(x)-正弦函数")  #图标题

#3.6显示标签
plt.legend(loc="upper left")

#3.7 展示
plt.show()
           
matplotlib绘制数学曲线python matplotlib绘制数学曲线

六.八函数同图

1.二元一次方程组

2.二次方函数

3.正弦函数

4.余弦函数

5.三次方函数

6.指数函数

7.对数函数

8.sigmoid函数

#1.导包
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist

#解决中文显示问题
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题


#2.数据

x = np.linspace(-np.pi, np.pi, 1000,)
y_sin = np.sin(x)
y_cos = np.cos(x)
y=1/2*x
y_2=x**2
y_3=x**3
y_2x=2**x
y_ln=np.log(x)
y_sigmoid=1/(1+np.exp(-x))


#3.绘图
#3.1设置画布尺寸
fig=plt.figure(figsize=(10,5))    #设置尺寸  ***

#3.2轴设置
#3.2.1 轴位置   **
ax = axisartist.Subplot(fig, 111)  #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax)#将绘图区对象添加到画布中

ax.axis[:].set_visible(False)#通过set_visible方法设置绘图区所有坐标轴隐藏

ax.axis["x"] = ax.new_floating_axis(0,0)#ax.new_floating_axis代表添加新的坐标轴
ax.axis["x"].set_axisline_style("->", size = 1.0)#给x坐标轴加上箭头

ax.axis["y"] = ax.new_floating_axis(1,0)#添加y坐标轴,且加上箭头
ax.axis["y"].set_axisline_style("-|>", size = 1.0) #实体箭头

ax.axis["x"].set_axis_direction("top")#设置x、y轴上刻度显示方向
ax.axis["y"].set_axis_direction("left")

#3.2.2轴刻度
plt.xlim((-3.5,3.5))    #设置x轴范围  注意将数据放在元组里
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],[r"$-\pi$",r"$-\pi/2$",r"$0$",r"$\pi/2$",r"$\pi$"])#*改成π值*

plt.ylim((-1.2,1.2))           #设置y轴范围
plt.yticks(np.linspace(-1,1,5)) #y轴区间 分成4份

# 3.3网格
plt.grid(True,which="major", color="gray", linestyle="--", linewidth=1, alpha=0.2)

#3.4绘制曲线

#3.4.1 绘制曲线
plt.plot(x, y,linestyle="-",color="black",linewidth=2, label="$y=0.5x$")    #一元一次函数
plt.plot(x, y_2,linestyle="-",color="orange",linewidth=2, label="$y=x^2$")  #二次方函数
plt.plot(x, y_3,linestyle="-",color="purple",linewidth=2, label="$y=x^3$")  #三次方函数
plt.plot(x, y_2x,linestyle="-",color="green",linewidth=2, label="$y=2^x$")  #指数函数
plt.plot(x, y_ln,linestyle="-",color="yellow",linewidth=2, label="$y=ln(x)$")  #对数函数
plt.plot(x, y_sigmoid,linestyle="-",color="purple",linewidth=2, label="$sigmoid$")  #sigmoid函数
plt.plot(x, y_sin,linestyle="-",color="blue",linewidth=2, label="$sin(x)$")  #正弦函数
plt.plot(x, y_cos,linestyle="-",color="red",linewidth=2, label="$cos(x)$")  #余弦函数


#3.4.2标注
# t = np.pi/3
# plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=1.5, linestyle="--")
# plt.plot([0,t],[np.sin(t),np.sin(t)], color ='red', linewidth=1.5, linestyle="--")
# plt.scatter(t,np.sin(t), 50, color ='red')

# plt.annotate(r'$\sin(\frac{\pi}{3})=\frac{\sqrt{3}}{2}$',
#              xy=(t, np.sin(t)), xycoords='data',
#              xytext=(+10, +30), textcoords='offset points', fontsize=16,
#              arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=0.6"))


# 3.5标题设置
# plt.xlabel("X")                #x轴标题 **  ***
# plt.ylabel("Y")              #y轴标题  **   ***
# plt.title("Sin(x)-function")  #图标题
plt.title("八函数同图")  #图标题

#3.6显示标签
plt.legend(loc="upper left")

#3.7 展示
plt.show()
           
matplotlib绘制数学曲线python matplotlib绘制数学曲线

一些官方文档参考资料

1.plot中参数描述

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot

2.plt.grid()中各参数描述

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.grid.html?highlight=grid#matplotlib.pyplot.grid

3.plt.legend() 参数描述

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.legend.html?highlight=legend#matplotlib.pyplot.legend

4.ax.spines 方法及参数

https://matplotlib.org/api/spines_api.html?highlight=spines#matplotlib.spines.Spine.set_position

5.plt.annotate 注释

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.annotate.html?highlight=annotate#matplotlib.pyplot.annotate

https://matplotlib.org/gallery/userdemo/connectionstyle_demo.html?highlight=connectionstyle

6.散点图

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.scatter.html?highlight=scatter#matplotlib.axes.Axes.scatter