Matplotlib;将圆圈添加到子图 - 发行/混淆

时间:2016-08-09 16:29:19

标签: python matplotlib geometry subplot

有点奇怪,我显然遗漏了一些东西,但我得到了一些非常奇怪的行为,我无法解决我做错的事情。< / p>

我有一个带有网格格式的子图的情节(为了这篇文章,我只说一个2乘2的网格)。我想在每个上绘制一些东西并添加一个圆圈。应该很容易,但它没有按照我的预期行事。

示例代码1:

import matplotlib.pyplot as plt

x = [ -1.0, -0.5, 0.0, 0.5, 1.0 ]
y = [  0.7,  0.2, 1.0, 0.0, 0.0 ]

circle = plt.Circle( ( 0, 0 ), 1 )

fig, axes = plt.subplots( 2, 2 )

axes[ 0, 0 ].plot( x, y )
axes[ 1, 1 ].plot( x, y )

axes[ 0, 0 ].add_patch( circle )
axes[ 1, 1 ].add_patch( circle )

plt.show( )

输出1:

Output 1

示例代码2:

import matplotlib.pyplot as plt

x = [ -1.0, -0.5, 0.0, 0.5, 1.0 ]
y = [  0.7,  0.2, 1.0, 0.0, 0.0 ]

circle = plt.Circle( ( 0, 0 ), 1 )

fig, axes = plt.subplots( 2, 2 )

axes[ 0, 0 ].plot( x, y )
axes[ 1, 1 ].plot( x, y )

axes[ 0, 0 ].add_patch( circle )
#axes[ 1, 1 ].add_patch( circle )

plt.show( )

输出2:

Output 2

示例代码3:

import matplotlib.pyplot as plt

x = [ -1.0, -0.5, 0.0, 0.5, 1.0 ]
y = [  0.7,  0.2, 1.0, 0.0, 0.0 ]

circle = plt.Circle( ( 0, 0 ), 1 )

fig, axes = plt.subplots( 2, 2 )

axes[ 0, 0 ].plot( x, y )
axes[ 1, 1 ].plot( x, y )

#axes[ 0, 0 ].add_patch( circle )
axes[ 1, 1 ].add_patch( circle )

plt.show( )

输出3:
Output 3

我真的不明白这种行为(为什么示例2工作但不是1或3?),或者我正在做的事情。任何人都能解释一下吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

你正在使用相同的&#39;圈&#39;绘制两个不同的补丁,我认为这是创建问题,它会抛出错误

  

无法重置轴。您可能正在尝试在多个不受支持的Axes中重复使用艺术家

您需要为每个子图创建不同的圆圈,

import matplotlib.pyplot as plt

x = [ -1.0, -0.5, 0.0, 0.5, 1.0 ]
y = [  0.7,  0.2, 1.0, 0.0, 0.0 ]

circle1 = plt.Circle( ( 0, 0 ), 1 )
circle2 = plt.Circle( ( 0, 0 ), 1 )

fig, axes = plt.subplots( 2, 2 )

axes[ 0, 0 ].plot( x, y )
axes[ 1, 1 ].plot( x, y )

axes[ 0, 0 ].add_patch( circle1 )
axes[ 1, 1 ].add_patch( circle2 )

plt.show( )