绘制多个数字并在图表中添加圆圈

时间:2017-04-30 23:34:04

标签: python matplotlib geometry figures

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

我认为我遇到的问题在于尝试向第一个数字添加圈子,但我完全不知道如何绕过这个问题。 Re和Rm分别只是地球和月球的半径,列表只是代码其余部分的值列表。我认为问题出在fig,axes = plt.subplots line。我没有得到两个单独的数字,而是将所有的值都捣碎成一个数字。

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()

1 个答案:

答案 0 :(得分:-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()

在这种情况下,它明确了这些图所属的轴。