从Matplotlib集合中检索标记

时间:2018-05-25 17:04:47

标签: python matplotlib markers

我正在寻找从Matplotlib集合中检索标记类型。

我可以通过调用collection.get_linestyle(),collection.get_linewidth()等来检索集合中的所有其他属性,但似乎没有标记选项。 我也可以从matplotline.line.line2d中检索标记类型。

有没有办法从集合中检索标记类型?

1 个答案:

答案 0 :(得分:0)

我认为您无法检索PathCollection中使用的标记类型(即在散点图中)。此信息不会存储在集合中。但是,标记存储为Path个对象(因此是集合的名称)。

例如:

fig, ax = plt.subplots()
a = ax.scatter([0],[0],marker='v')
b = ax.scatter([1],[0],marker='s')

a.get_paths()
  

(Path(array([[ - 6.123234e-17,-5.000000e-01],           [5.000000e-01,5.00000000-01],           [-5.000000e-01,5.00000000-01],           [-6.123234e-17,-5.000000e-01]]),数组([1,2,2,79],dtype = uint8)),)

正如你猜测的那样,三角形标记由4个点定义(注意最后一个点等于第一个点,因此形状是闭合的。)

b.get_paths()
  

(Path(array([[ - 0.5,-0.5],           [0.5,-0.5],           [0.5,0.5],           [-0.5,0.5],           [-0.5,-0.5]]),数组([1,2,2,8,79],dtype = uint8)),)

相反,方形标记由5个点(最后一个点==第一个点)定义。

如果目标是将此标记复制到新集合,则应该能够复制Path对象。如果您需要以某种方式检测使用哪个标记,您可以保留Paths对象列表(如上所述生成)并将返回的Path与该列表进行比较。