我正在寻找从Matplotlib集合中检索标记类型。
我可以通过调用collection.get_linestyle(),collection.get_linewidth()等来检索集合中的所有其他属性,但似乎没有标记选项。 我也可以从matplotline.line.line2d中检索标记类型。
有没有办法从集合中检索标记类型?
答案 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与该列表进行比较。