我目前正在对轨道的轨迹进行编码,并试图在一次运行中绘制两个图形。我想要一个图形来显示卫星的轨道路径,地球和月球在图中以圆的形式显示。然后我想要一个单独的图形,显示轨迹随时间变化的能量。
我认为我遇到的问题在于试图在第一个数字上添加圆圈,尽管我完全不知道如何绕过这个问题。Re和Rm分别是地球和月球的半径,列表只是代码其余部分的值的列表。我认为问题出在图中,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()发布于 2017-05-01 17:48:04
第二个图没有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()在这种情况下,图属于哪个轴是明确的。
https://stackoverflow.com/questions/43712463
复制相似问题