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(‘樣式’)