首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制多个图形并在绘图中添加圆

绘制多个图形并在绘图中添加圆
EN

Stack Overflow用户
提问于 2017-05-01 07:34:04
回答 1查看 935关注 0票数 0

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

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

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2017-05-01 17:48:04

第二个图没有plt.plot()可以绘制的子图。因此,它采用最后一个打开的子图(轴)。游戏中还有一个超出所需的数字。

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

代码语言:javascript
复制
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)。

代码语言:javascript
复制
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()

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43712463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档