Python 如何使用图例绘制非结构化numpy阵列? 在使用matplotlib绘制n维非结构化数组时,是否可以为每个维度生成图例标签? 当使用ODE时,ODE系统的解作为5个变量的形状(100,5)数组返回 我想将一个系统中的解决方案绘制为线条,因此plt.plot(sol'-'),重置颜色循环,然后使用plt.plot(sol'-')再次绘制使用另一个ODE系统计算的相同5 这样,我在一个绘图中有5个变量,精确的作为直线,近似的作为虚线 我可以尝试玩不透明的情况下,解决方案很难区分 主要目标是以简单的方式获得10行的图例 最好是一些循环,因为我们可以称它们为u1、u2、u3、u4、u5、u1_e、u2_e、u3_e、u4_e、u5_e 在matplotlib中是否可以这样做 本例仅使用二阶ODE,但应了解如何添加图例。 使用来自的示例 通过将dtype添加到sol数组,将非结构化数组转换为 从scipy.integrate导入odeint 将numpy作为np导入 将matplotlib.pyplot作为plt导入 #颂歌系统 def未决(y、t、b、c): θ,ω=y dydt=[omega,-b*omega-c*np.sin(θ)] 回程差 b=np.arange(0.50,0,-0.25) c=5.0 y0=[np.pi-0.1,0.0] t=np.linspace(0,10101) ls=['-','-']#线型列表 计数=0#用于索引当前线型 对于b中的i: sol=odeint(pend,y0,t,args=(i,c)) type_to_set='float64'#指定所需的类型(例如'float64') dtype=np.dtype([(f'{x}ode:{i}',type_to_set)用于范围内的x(sol.shape[1]))#创建名称和数据类型列表 sol_updated=sol.astype(type_to_set).view(dtype)#向sol添加名称和数据类型 #密谋 #plt.figure()#如果要为每个组分别绘制,请取消对此行的注释并将plt.legend放在4个空格中,这样它就在绘制循环之后 对于sol_updated.dtype.names中的名称: plt.plot(t,sol_更新[name],linestyle=ls[count],label=name) 计数+=1#将1添加到标记索引器 plt.gca().set_prop_cycle(无) plt.图例(bbox_至_锚定=(1.04,0.5),位置=左中,边界轴SPAD=0) plt.show() 这是同一绘图上的两组(101,2)阵列,每个ode解决方案组具有唯一的线样式

Python 如何使用图例绘制非结构化numpy阵列? 在使用matplotlib绘制n维非结构化数组时,是否可以为每个维度生成图例标签? 当使用ODE时,ODE系统的解作为5个变量的形状(100,5)数组返回 我想将一个系统中的解决方案绘制为线条,因此plt.plot(sol'-'),重置颜色循环,然后使用plt.plot(sol'-')再次绘制使用另一个ODE系统计算的相同5 这样,我在一个绘图中有5个变量,精确的作为直线,近似的作为虚线 我可以尝试玩不透明的情况下,解决方案很难区分 主要目标是以简单的方式获得10行的图例 最好是一些循环,因为我们可以称它们为u1、u2、u3、u4、u5、u1_e、u2_e、u3_e、u4_e、u5_e 在matplotlib中是否可以这样做 本例仅使用二阶ODE,但应了解如何添加图例。 使用来自的示例 通过将dtype添加到sol数组,将非结构化数组转换为 从scipy.integrate导入odeint 将numpy作为np导入 将matplotlib.pyplot作为plt导入 #颂歌系统 def未决(y、t、b、c): θ,ω=y dydt=[omega,-b*omega-c*np.sin(θ)] 回程差 b=np.arange(0.50,0,-0.25) c=5.0 y0=[np.pi-0.1,0.0] t=np.linspace(0,10101) ls=['-','-']#线型列表 计数=0#用于索引当前线型 对于b中的i: sol=odeint(pend,y0,t,args=(i,c)) type_to_set='float64'#指定所需的类型(例如'float64') dtype=np.dtype([(f'{x}ode:{i}',type_to_set)用于范围内的x(sol.shape[1]))#创建名称和数据类型列表 sol_updated=sol.astype(type_to_set).view(dtype)#向sol添加名称和数据类型 #密谋 #plt.figure()#如果要为每个组分别绘制,请取消对此行的注释并将plt.legend放在4个空格中,这样它就在绘制循环之后 对于sol_updated.dtype.names中的名称: plt.plot(t,sol_更新[name],linestyle=ls[count],label=name) 计数+=1#将1添加到标记索引器 plt.gca().set_prop_cycle(无) plt.图例(bbox_至_锚定=(1.04,0.5),位置=左中,边界轴SPAD=0) plt.show() 这是同一绘图上的两组(101,2)阵列,每个ode解决方案组具有唯一的线样式,python,numpy,matplotlib,legend,ode,Python,Numpy,Matplotlib,Legend,Ode,非常感谢。我只需要在外部for循环的末尾添加一个plt.gca().set_prop_cycle(None),它满足了我的所有标准,因为我希望估算值和原始值的颜色相同,一个是实线,一个是虚线。

非常感谢。我只需要在外部for循环的末尾添加一个
plt.gca().set_prop_cycle(None)
,它满足了我的所有标准,因为我希望估算值和原始值的颜色相同,一个是实线,一个是虚线。