Python——在图中编辑公式
实例:
import matplotlib.pyplot as plt
import numpy as np
plt.subplot(111)
plt.plot()
plt.xlim([1,7])
plt.ylim([1,5])
plt.text(2,4,r'$ \alpha_i \beta_j \pi \lambda \omega $',size=15,color='r')
plt.text(4,4,r'$ sin(0) = cos(\frac{\pi}{2})$',size=15,color='r')
plt.text(2,2,r'$ \lim_{x \longrightarrow y} \frac{1}{x^3} $',size=15,color='r')
plt.text(4,2,r'$ \sqrt[4]{x} = \sqrt{y} $',size=15,color='r')
结果:
Python-----填充曲线之间的区域
(1)使用fill函数
import matplotlib.pyplot as plt
import numpy as np
x= np.linspace(0,5*np.pi,1000)
y1= np.sin(x)
y2= np.sin(2*x)
plt.plot(x,y1,color='r')
plt.plot(x,y2,color='g')
plt.fill(x,y1,'b',alpha=0.3) #alpha为透明度,添加透明度,颜色看起来柔和
plt.fill(x,y2,'r',alpha=0.3)
结果:
(2)使用fill_between函数
import matplotlib.pyplot as plt
import numpy as np
x= np.linspace(0,5*np.pi,1000)
y1= np.sin(x)
y2= np.sin(2*x)
plt.plot(x,y1,color='r')
plt.plot(x,y2,color='g')
plt.fill_between(x,y1,y2,where=y1>y2,facecolor='yellow',interpolate=True,alpha=0.3)
# where=y1>y2,facecolor='yellow'为判断条件,当曲线1在曲线2上时,填充黄色
# interpolate=True在x分布不均匀时,很小区域可能未上色。这时需要根据曲线的范围直接对全部范围上色
plt.fill_between(x,y1,y2,where=y2>=y1,facecolor='blue',interpolate=True,alpha=0.3)
结果:
任务:画出下图
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.patches as mpatches
# 生成4个子图
fig, axes = plt.subplots(ncols = 2, nrows = 2)
# 将4个图的坐标轴作为4个对象
ax1,ax2,ax3,ax4 = axes.ravel()
# 第一个图
x,y = np.random.normal(size=(2,100))
ax1.plot(x,y,'o')
# 第二个图
x= np.arange(0,10)
y= np.arange(0,10)
ncolors = len(plt.rcParams['axes.color_cycle'])
shift = np.linspace(0,10,ncolors)
for s in shift:
ax2.plot(x,y+s,'-')
# 第三个图
x= np.arange(5)
y1,y2,y3 = np.random.randint(0,25,size=(3,5))
width = 0.3
ax3.bar(x,y1,width,color=plt.rcParams['axes.color_cycle'][1])
ax3.bar(x+width,y2,width,color=plt.rcParams['axes.color_cycle'][2])
ax3.bar(x+2*width,y3,width,color=plt.rcParams['axes.color_cycle'][3])
# 第四个图
for color in plt.rcParams['axes.color_cycle']:
# for i, color in enumerate(plt.rcParams['axes.color_cycle']): 效果一样
xy = np.random.normal(size=2)
ax4.add_patch(plt.Circle(xy,radius=0.2,color=color))
# 将坐标轴对齐,使10个圆同时显示
ax4.axis('equal')
结果:
使用:自行选择样式
plt.style.use(‘样式’)