matplotlib 基础(二)

1173-杨同学

发表文章数:29

首页 » 数据科学库 » 正文

注释

#注释 xy--注释的起始点 xytext--字的起始坐标 frac--箭头占的比例
plt.annotate('this is the bottom',xy=(0,1),xytext=(-4,20),
             arrowprops=dict(facecolor='r',frac=0.2,
                             headwidth=10,width=10))
plt.show()

文字

#family--字体 style-效果(斜体) weight--粗细 bbox--镶体
plt.text(-2,40,'function:y=x*x',family='serif',size=20,color='r',weight='black')
plt.text(-2,40,'function:y=x*x',family='sans-serif',size=20,color='g',
         style='italic',weight='light',bbox=dict(facecolor='r',alpha=0.2))
plt.show()

Tex公式

matplotlib自带mathtext引擎,不需要安装TeX系统
作为开始和结束符,如“ y=x+z $ ”
matplotlib 基础(二)

import matplotlib.pyplot as plt
fig=plt.figure()
ax=fig.add_subplot(111)
ax.set_xlim=([1,7])
ax.set_ylim=([1,5])
#r--说明不是转义字符串
ax.text(2,4,r"$ /alpha_i /beta_j /pi /lamda /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()

区域填充

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,5*np.pi,1000)
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)
ax=plt.gca()
ax.plot(x,y1,color='r')
ax.plot(x,y2,color='b')
#中间区域填充  interpolate=Tru自动填充空白区域
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()

形状

生成形状,patches
import matplotlib.patches as mpatches
add_patch

matplotlib 基础(二)

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.2])
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)
ellipsis=mpatches.Ellipse(xy4,0.4,0.2,color='y')
ax.add_patch(ellipsis)
plt.axis('equal')#调整坐标轴比例
plt.show()

样式-美化

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
plt.styles.use('ggplot')
fig,axes=plt.subplots(ncols=2,nrows=3)
ax1,ax2,ax3,ax4=axes.ravel()
x,y=np.random.normal(size=(2,100))
ax1.plot(x,y,'o')
x=np.arange(0,10)
x=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(1,25,size=(3,5))
width=0.25
ax3.bar(x,y1,width)
ax3.bar(x+width,y2,width,color=plt.rcParams['axes.color_cycle'][1])
ax3.bar(x+2*width,y2,width,color=plt.rcParams['axes.color_cycle'][2])
for i,color in enumerate(plt.rcParams['axes.color_cycle']):
    xy=np.random.normal(size=2)
    ax4.add_patch(plt.Circle(xy,radius=0.3,color=color))
ax4.axis('equal')
plt.show()

极坐标

import numpy as np
import matplotlib.pyplot as plt

r=np.arange(1,6,1)
theta=[0,np.pi/2,np.pi,3*np.pi/2,2*np.pi]
ax=plt.subplot(projection='polar')
ax.plot(theta,r,color='r',linewidth=3)
ax.grid(True)
plt.show()

函数积分图

matplotlib 基础(二)

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
def func(x):
    return -(x-2)*(x-8)+40
x=np.linspace(0,10)
y=func(x)
fig,ax=plt.subplots()
plt.plot(x,y,'r',linewidth=2)
a=2
b=9
ax.set_xticks([a,b])
ax.set_yticks([])
ax.set_xticklabels(['$a$','$b$'])
ix=np.linspace(a,b)
iy=func(ix)
ixy=zip(ix,iy)
verts=[(a,0)]+list(ixy)+[(b,0)]
poly=Polygon(verts,facecolor='0.9',edgecolor='0.5')
ax.add_patch(poly)
plt.figtext(0.9,0.05,'$x$')
plt.figtext(0.1,0.9,'$y$')
x_math=(a+b)*0.5
y_math=35
plt.ylim(ymin=25)
plt.text(x_math,y_math,r'$/int_a^b(-(x-2)*(x-8)+40)dx$',fontsize=20,horizontalalignment='center')
plt.show()

未经允许不得转载:作者:1173-杨同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《matplotlib 基础(二)》 发布于2020-07-19

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

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

支付宝扫一扫打赏

微信扫一扫打赏

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

登录

忘记密码 ?

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

Q Q 登 录
微 博 登 录