Matplotlib 如何复制python对象/如何获取python对象的元素 问题1:

Matplotlib 如何复制python对象/如何获取python对象的元素 问题1:,matplotlib,geometry,python-3.6,Matplotlib,Geometry,Python 3.6,我需要复制我创建的一个圆 import matplotlib.pyplot as plt from matplotlib.patches import Circle C1=Circle(xy=(3, 4), radius=2, fill=False, color='g') 我想做一些类似的事情: C2 = C1.copy() 能够在不修改C1的情况下修改C2,但我得到了错误: 'AttributeError: 'Circle' object has no attribute 'copy''

我需要复制我创建的一个圆

import matplotlib.pyplot as plt 
from matplotlib.patches import Circle
C1=Circle(xy=(3, 4), radius=2, fill=False, color='g')
我想做一些类似的事情:

C2 = C1.copy()
能够在不修改C1的情况下修改C2,但我得到了错误:

'AttributeError: 'Circle' object has no attribute 'copy''  
有人知道怎么做吗

问题2: 我试图得到C1的元素

xy = C1.xy

AttributeError:“圆”对象没有属性“xy”


AttributeError:“圆”对象没有属性“颜色”

对于xy来说,我通过做

xy = C1.center

但我不明白为什么我必须使用中心,即使我声明它为“xy”。对于颜色我仍然不知道如何得到它。。。我认为这可能是父对象的一个特征,不特定于圆对象,但如何获得它???

这是两个完全不同的问题

复制 您可以使用copy复制任何python元素

消耗 matplotlib美工程序不是直接访问属性,而是为其大多数属性提供getter/setter

C1.get_facecolor()
C1.get_edgecolor()
C1.get_radius()
圆没有.get_center方法确实有点不一致。因此,要获得中心使用

C1.center
复制艺术家 为了复制艺术家,您可以使用其update_from方法。这将一次将所有样式从一个艺术家复制到另一个艺术家。它不会更新其位置

import matplotlib.pyplot as plt 
from matplotlib.patches import Circle

C1=Circle(xy=(3, 4), radius=2, fill=False, color='g')
C2=Circle(xy=(1, 2), radius=1, fill=True, color='b')

plt.gca().add_patch(C1)
plt.gca().add_patch(C2)

C1.update_from(C2)

plt.show()
要获取圆的颜色“b”,请执行以下操作:

C1.get_edgecolor()

非常感谢你。我还有一个问题。。。如何获得颜色。。。。C1.get_color不起作用…AttributeError:“Circle”对象没有属性“get_color”,最后一个问题是:复制和复制艺术家之间的区别是什么???复制似乎要容易得多:-。复制的C2和更新的C2之间有区别吗?是的,对不起,没有“获取颜色”,只有“设置颜色”。因为不清楚您想要的是facecolor还是edgecolor。copy和update_from之间的区别在于update_from不会复制坐标。
import matplotlib.pyplot as plt 
from matplotlib.patches import Circle

C1=Circle(xy=(3, 4), radius=2, fill=False, color='g')
C2=Circle(xy=(1, 2), radius=1, fill=True, color='b')

plt.gca().add_patch(C1)
plt.gca().add_patch(C2)

C1.update_from(C2)

plt.show()
import matplotlib.pyplot as plt 
from matplotlib.patches import Circle

C1=Circle(xy=(3, 4), radius=2, fill=False, color='g')
C1.get_edgecolor()