Day15

首页 » 数据科学库 » 正文

一、在图中进行注释

使用plt.annotate方法可在图中进行标注:
arrowprops为显示一个箭头,frac为箭头占的比例,headwidth为箭头宽度,width
为箭身的宽度。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10,11,1)

y = x*x

plt.plot(x,y)

plt.annotate("this is the bottom",xy=(0,1),xytext=(0,20),arrowprops=dict(facecolor="r",frac=0.2,headwidth=10,width=5))

plt.show()

显示结果:
Day15

二、文字

使用plt.text方法即可完成在图上进行一些文字的提示:
family参数是字体类型(官网可找的),size是字体大小,c是颜色,style可以设置斜体,weight可以设置加粗,bbox为设置给文字加框。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-10,11,1)
y = x*x

plt.plot(x,y)
plt.text(-4,40,"function:y=x*x",family='serif',size=20,c="r",style="italic",weight="black")
plt.text(-4,20,"function:y=x*x",family="fantasy",size=20,c="g",style="oblique",weight="light",bbox=dict(facecolor='r',alpha=0.2))
plt.show()

显示结果:
Day15

三、公式

使用.text方法在图上显示数学公式:

import matplotlib.pyplot as plt

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{y} $",size=25)
plt.show()

显示结果:
Day15

四、区域填充

使用plt.fill或者fill_between函数对区域进行填充。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0,5*np.pi,100)
y1 = np.sin(x)
y2 = np.sin(2*x)

# plt.plot(x,y1)
# plt.plot(x,y2)

# plt.fill(x,y1,'b',alpha=0.3)
# plt.fill(x,y2,"r",alpha=0.3)

fig = plt.figure()
ax = plt.gca()

ax.plot(x,y1,color="red")
ax.plot(x,y2,color="blue")
ax.fill_between(x,y1,y2,where=y1>y2,facecolor="yellow",interpolate=True)
ax.fill_between(x,y1,y2,where=y1<y2,facecolor="green",interpolate=True)
plt.show()

填充效果:
Day15

五、形状绘制

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

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

绘制的结果:
Day15

六、绘制极坐标

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

绘制效果:
Day15

七、绘制函数的积分图

绘制函数的积分图,首先需要绘制出目标的函数,然后确定积分区间并填充选择的区间,然后完成积分函数的标注。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

def fun(x):
    return -(x-2)*(x-8)+40

a=2
b=9

x = np.linspace(0,10)

y = fun(x)

fig , ax = plt.subplots()

plt.plot(x,y,"r",linewidth=2)
ax.set_xticks([a,b])
ax.set_yticks([])

ax.set_xticklabels([r"$a$","$b$"])

ix = np.linspace(a,b)
iy = fun(ix)

ixy =zip(ix,iy)

verts = [(a,0)]+list(ixy)+[(b,0)]

ploy = mpatches.Polygon(verts,facecolor="0.9",edgecolor='0.5')
ax.add_patch(ploy)
x_math  = (a+b)*0.5*0.5
y_math = 35

plt.text(x_math,y_math,r"$/int_a^b (-(x-2)*(x-8)+40)dx$",fontsize=15)
# plt.ylim(ymin=30)

plt.figtext(0.97,0.05,"$x$")
plt.figtext(0.01,0.95,"$y$")

plt.show()

绘制效果:
Day15

未经允许不得转载:作者:1336-陈同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Day15》 发布于2020-11-07

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录