0

我目前正在编码轨道的轨迹,并试图在一次运行中绘制两个数字。我想要一个图形来显示卫星的轨道路径,其中地球和月球在图上显示为圆圈。然后我想要一个单独的图形来显示轨迹的能量随时间的变化。

我认为我遇到的问题在于尝试在第一个数字中添加圆圈,尽管我完全不知道如何规避这个问题。Re 和 Rm 分别只是地球和月球的半径,列表只是我在其余代码中的值的列表。我认为问题出在 fig,axes = plt.subplots 行。我没有得到两个单独的数字,而是将所有值混合成一个数字。

plt.figure(1)
fig, axes = plt.subplots()
earth = plt.Circle((0,0), Re, color = 'blue' )
moon = plt.Circle((0,ym), Rm, color = 'yellow' )
plt.gca().set_aspect('equal', adjustable='box')
plt.plot(xlist,ylist)
axes.add_patch(earth)
axes.add_patch(moon)

plt.figure(2)
plt.plot(tlist,pelist, 'r')
plt.plot(tlist,kelist, 'b')
plt.plot(tlist,elist, 'g')

plt.show()
4

1 回答 1

-1

第二个图没有plt.plot()可以绘制的子图。因此,它采用最后一个打开的子图(轴)。游戏中还需要多一个人物。

简单的解决方案是删除双图创建并在第二个图中添加一个子图:

import matplotlib.pyplot as plt

fig, axes = plt.subplots()
earth = plt.Circle((0,0),1, color = 'blue' )
moon = plt.Circle((0,2),0.2, color = 'yellow' )
plt.gca().set_aspect('equal', adjustable='box')
axes.add_patch(earth)
axes.add_patch(moon)
plt.plot([0,0],[0,2])

plt.figure(2)
plt.subplot(111)
plt.plot([1,2,3],[3,2,1], 'r')
plt.plot([1,2,3],[2,3,1], 'b')
plt.plot([1,2,3],[1,3,2], 'g')

plt.show()

使其更易于理解的更好解决方案是仅使用创建的对象进行绘图(matplotlib API)。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.set_aspect('equal', adjustable='box')
earth = plt.Circle((0,0),1, color = 'blue' )
moon = plt.Circle((0,2),0.2, color = 'yellow' )
ax.add_patch(earth)
ax.add_patch(moon)
ax.plot([0,0],[0,2])

fig2, ax2 = plt.subplots()
ax2.plot([1,2,3],[3,2,1], 'r')
ax2.plot([1,2,3],[2,3,1], 'b')
ax2.plot([1,2,3],[1,3,2], 'g')

plt.show()

在这种情况下,绘图属于哪个轴是明确的。

于 2017-05-01T09:48:04.193 回答