Python 如何从单个绘图中生成不同区域的子绘图

Python 如何从单个绘图中生成不同区域的子绘图,python,matplotlib,plot,subplot,Python,Matplotlib,Plot,Subplot,我使用matplotlib.pyplot中的plt.plot()绘制了一个显示两组数据的绘图。我可以使用plt.axis([xmax,xmin,ymin,xmax])放大到绘图的不同区域,但我希望在一个输出中生成(至少5)个不同区域的子批次,而不必为每个区域创建新单元。这可能吗 代码有点凌乱,但我附加了一个情节的屏幕截图。在这个图中,我想“放大”到垂直线的区域:您可以使用matplotlib功能ConnectionPatch,可以找到文档 p.S.:我使用了随机数据,因为您没有上传dat文件 请

我使用matplotlib.pyplot中的plt.plot()绘制了一个显示两组数据的绘图。我可以使用plt.axis([xmax,xmin,ymin,xmax])放大到绘图的不同区域,但我希望在一个输出中生成(至少5)个不同区域的子批次,而不必为每个区域创建新单元。这可能吗


代码有点凌乱,但我附加了一个情节的屏幕截图。在这个图中,我想“放大”到垂直线的区域:

您可以使用
matplotlib
功能
ConnectionPatch
,可以找到文档

p.S.:我使用了随机数据,因为您没有上传dat文件

请参考下面的代码

从matplotlib.patches导入ConnectionPatch
字体={'family':'normal',
“重量”:“粗体”,
“大小”:18}
plt.rc('font',**font)
#使用lambda定义函数
余量=λA,安培,角度,相位:A*角度+安培*np.sin(角度+相位)
#定义参数
θ=np.linspace(0,2*np.pi,250)#x轴
np.随机种子(100)
噪声=0.2*np.随机。随机(250)
y=余量(.1.2,θ,1.2)+噪声#y轴
#创建大小为6x5的主容器
图=plt.图(图尺寸=(10,8))
plt.子批次调整(底部=0,左侧=0,顶部=1,右侧=1)
#创建第一个轴,左上角用绿色打印
sub1=图添加_子图(2,2,1)#两行两列第一个单元格
sub1.绘图(θ,y,lw=2,颜色为“绿色”);sub1.grid()
sub1.set_xlim(1,2)
sub1.set_ylim(0.2,.5)
子1.设置标签('y',标签垫=15)
#创建第二个轴,左上角用橙色打印
sub2=图添加_子图(2,2,2)#两行两列第二个单元格
sub2.绘图(θ,y,lw=2,颜色为“橙色”);sub2.grid()
sub2.set_xlim(5,6)
sub2.set_ylim(.4,1)
#创建第三个轴,即第三个和第四个单元的组合
sub3=图添加_子图(2,2,(3,4))#两行,两列,组合第三和第四单元格
子3.绘图(θ,y,lw=2,颜色='darkorchid',α=.7)
sub3.集_xlim(0,6.5)
sub3.set_ylim(0,1)
sub3.set_xlabel(r'$\theta$(rad'),labelpad=15)
子3.设置标签('y',标签垫=15)
#在第三个轴上创建阻塞区域
sub3.在((1,2),0,1,facecolor='green',alpha=0.2)之间填充#第一个轴的阻塞区域
sub3.在((5,6),0,1,facecolor='orange',alpha=0.2)之间填充#第二个轴的阻塞区域
#为第一个轴创建连接面片的左侧
con1=ConnectionPatch(xyA=(1.2),coordsA=sub1.transData,
xyB=(1.3),coordsB=sub3.transData,颜色='绿色')
#将左侧添加到图中
图添加艺术家(con1)
#为第一个轴创建连接面片的右侧
con2=ConnectionPatch(xyA=(2.2),coordsA=sub1.transData,
xyB=(2.3),coordsB=sub3.transData,颜色='绿色')
#将右侧添加到图中
图添加艺术家(con2)
#为第二个轴创建连接面片的左侧
con3=ConnectionPatch(xyA=(5.4),coordsA=sub2.transData,
xyB=(5.5),coordsB=sub3.transData,颜色='橙色')
#将左侧添加到图中
图添加艺术家(con3)
#为第二个轴创建连接面片的右侧
con4=连接补丁(xyA=(6.4),coordsA=sub2.transData,
xyB=(6.9),coordsB=sub3.transData,颜色='橙色')
#将右侧添加到图中
图添加艺术家(con4)
plt.grid()