在图上画出注释
x = np.arange(-10, 11, 1)
y = x*x
plt.plot(x, y)
plt.annotate('bootom', xy=(0, 1), xytext=(0, 20),
arrowprops=dict(facecolor='r', frac=0.2, headwidth=30, width=20)) #注释的文字,xy是箭头的坐标,xytext注释的起始坐标
plt.show()
在图中加上文字,并更改相关参数
x = np.arange(-10, 11, 1)
y = x*x
plt.plot(x, y)
plt.text(-2, 40, 'function1:y=x*x', family='serif', size=10, color='r', style='italic', weight='light')
plt.text(-2, 20, 'function2:y=x*x', family='sans-serif', size=10, color='g', weight=1000, bbox=dict(facecolor='r', alpha=0.2))
plt.show()
matplotlib自带mathtext引擎,不需安装Tex系统
作
为
开
始
和
结
束
符
,
如
作为开始和结束符,如
作为开始和结束符,如 y=x+z $
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim([1, 7])
ax.set_ylim([1, 5])
ax.text(2, 4, r"$ \alpha_i \beta_j \pi \lambda \omega $ ", size=25)
ax.text(4, 4, r"$ \sin(0)=\cos(\frac{\pi}{2}) $ ", size=25)
ax.text(2, 2, r"$ \lim_{x \rightarrow y} \frac{1}{x^3} $ ", size=25)
ax.text(4, 2, r"$ \sqrt[4]{x}=\sqrt[2]{y} $ ", size=25)
plt.show()
x = np.linspace(0, 5*np.pi, 1000)
y1 = np.sin(x)
y2 = np.sin(2*x)
plt.fill(x, y1, 'b', alpha=0.3)
plt.fill(x, y2, 'r', alpha=0.3)
plt.show()
x = np.linspace(0, 5*np.pi, 1000)
y1 = np.sin(x)
y2 = np.sin(2*x)
fig = plt.figure()
ax = plt.gca()
ax.plot(x, y1, color='r')
ax.plot(x, y2, color='b')
ax.fill_between(x, y1, y2, where=y1 >= y2, facecolor='yellow', interpolate=True) #自动把空白处填充
ax.fill_between(x, y1, y2, where=y2 > y1, facecolor='green', interpolate=True) #自动把空白处填充
plt.show()
形状
fig, ax = plt.subplots()
xy1 = np.array([0.2, 0.2])
xy2 = np.array([0.2, 0.8])
xy3 = np.array([0.8, 0.2])
xy4 = np.array([0.8, 0.8])
circle = mpatches.Circle(xy1, 0.1) #生成圆形的对象,第二个参数为半径
ax.add_patch(circle)
rect = mpatches.Rectangle(xy2, 0.2, 0.1, color='r')
ax.add_patch(rect)
polygon = mpatches.RegularPolygon(xy3, 6, 0.1, color='g')
ax.add_patch(polygon)
ellipse = mpatches.Ellipse(xy4, 0.4, 0.2, color='y')
ax.add_patch(ellipse)
plt.axis('equal')
plt.grid()
plt.show()
原始图形
进行美化后的
fig, axes = plt.subplots(ncols=2, nrows=2) #生成两行两列的子图
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.prop_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(1, 25, size=(3, 5))
width = 0.25
ax3.bar(x, y1, width)
ax3.bar(x+width, y2, width)
ax3.bar(x+2*width, y1, width)
for i, color in enumerate(plt.rcParams['axes.prop_cycle']):
xy = np.random.normal(size=2)
ax4.add_patch(plt.Circle(xy, radius=0.3))
ax4.axis('equal')
plt.show()
plt.style.use('fivethirtyeight')
plt.style.use('dark_background')
plt.style.use('grayscale')
极坐标
r = np.arange(1, 6, 1)
theta = [0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi]
ax = plt.subplot(111, projection='polar') #投影成极坐标
ax.plot(theta, r, color='r', linewidth=3)
ax.grid(True)
plt.show()
plt.style.use('fivethirtyeight')
r = np.empty(9) #生成一个所有元素为5的数组
r.fill(5)
pi_two = np.pi*2
theta = [0, pi_two/8, 2*pi_two/8, 3*pi_two/8, 4*pi_two/8,
5*pi_two/8, 6*pi_two/8, 7*pi_two/8, 8*pi_two/8]
ax = plt.subplot(111, projection='polar') #投影成极坐标
ax.plot(theta, r, color='r', linewidth=3)
ax.grid(True)
plt.show()