Python可视化注释,文字,Tex公式,区域填充,形状,美化样式,极坐标

在图上画出注释

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值