在matplotlib中叠加2个图 - 空图

时间:2015-11-19 14:50:54

标签: python matplotlib

我试图用matplotlib在同一个图上绘制一个圆和一个矩形。

相反,我得到一个空的情节。我该怎么办?

这是我的代码:

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 

plt.axes()
circle = plt.Circle((0, 0), radius=0.75, fc='y')
plt.axis('scaled')
rectangle = plt.Rectangle((10, 10), 100, 100, fc='r')
plt.gca().add_patch(rectangle)

2 个答案:

答案 0 :(得分:1)

您需要设置轴限制。您可以使用plt.autoscale()plt.xlimplt.ylim执行此操作。您还需要添加圆形补丁。在脚本末尾添加以下行:

plt.gca().add_patch(circle)
plt.autoscale()

enter image description here

答案 1 :(得分:1)

您的代码主要是有效的。唯一的问题是

plt.axis('scaled')

仔细检查您的轴限制 - 此行仅适用于普通绘图对象,而不适用于修补程序,因此如果删除此行,您应该会看到矩形(尽管您还忘记添加圆圈粘贴代码),只要您更新轴限制(我使用下面的plt.axis([-1, 120, -1, 120])来实现此目的)。

完整的工作清单是:

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 

plt.axes()
circle = plt.Circle((0, 0), radius=0.75, fc='y')
plt.gca().add_patch(circle)
rectangle = plt.Rectangle((10, 10), 100, 100, fc='r')
plt.gca().add_patch(rectangle)
plt.axis([-1, 120, -1, 120])

或者,plt.autoscale也可以根据tom的建议设置数据限制。