Skip to main content
 首页 » 编程设计

python之从 matplotlib 散点图中恢复数据

2025年05月04日36虾米哥

<分区>

从 matplotlib 散点图中,我正在尝试恢复点数据。考虑

from matplotlib import pyplot as plt 
import numpy as np 
fig = plt.figure() 
x = np.linspace(0.0, 1.0, 5) 
y = np.linspace(0.0, 1.0, 5) 
plt.scatter(x, y) 
 
ax = fig.get_children()[1] 
pc = ax.get_children()[2] 
for path in pc.get_paths(): 
    print 
    print('path:') 
    print(path) 
    print 
    print('segments:') 
    for vert, code in path.iter_segments(): 
        print(code, vert) 
 
plt.show() 

这产生

path: 
Path(array([[ 0.        , -0.5       ], 
       [ 0.13260155, -0.5       ], 
       [ 0.25978994, -0.44731685], 
       [ 0.35355339, -0.35355339], 
       [ 0.44731685, -0.25978994], 
       [ 0.5       , -0.13260155], 
       [ 0.5       ,  0.        ], 
       [ 0.5       ,  0.13260155], 
       [ 0.44731685,  0.25978994], 
       [ 0.35355339,  0.35355339], 
       [ 0.25978994,  0.44731685], 
       [ 0.13260155,  0.5       ], 
       [ 0.        ,  0.5       ], 
       [-0.13260155,  0.5       ], 
       [-0.25978994,  0.44731685], 
       [-0.35355339,  0.35355339], 
       [-0.44731685,  0.25978994], 
       [-0.5       ,  0.13260155], 
       [-0.5       ,  0.        ], 
       [-0.5       , -0.13260155], 
       [-0.44731685, -0.25978994], 
       [-0.35355339, -0.35355339], 
       [-0.25978994, -0.44731685], 
       [-0.13260155, -0.5       ], 
       [ 0.        , -0.5       ], 
       [ 0.        , -0.5       ]]), array([ 1,  4,  4,  4,  4,  4,  4,  4,  4, 
4,  4,  4,  4,  4,  4,  4,  4, 
        4,  4,  4,  4,  4,  4,  4,  4, 79], dtype=uint8)) 
 
segments: 
(1, array([ 0. , -0.5])) 
(4, array([ 0.13260155, -0.5       ,  0.25978994, -0.44731685,  0.35355339, 
       -0.35355339])) 
(4, array([ 0.44731685, -0.25978994,  0.5       , -0.13260155,  0.5       ,  0. 
])) 
(4, array([ 0.5       ,  0.13260155,  0.44731685,  0.25978994,  0.35355339, 
        0.35355339])) 
(4, array([ 0.25978994,  0.44731685,  0.13260155,  0.5       ,  0.        , 
        0.5       ])) 
(4, array([-0.13260155,  0.5       , -0.25978994,  0.44731685, -0.35355339, 
        0.35355339])) 
(4, array([-0.44731685,  0.25978994, -0.5       ,  0.13260155, -0.5       ,  0. 
])) 
(4, array([-0.5       , -0.13260155, -0.44731685, -0.25978994, -0.35355339, 
       -0.35355339])) 
(4, array([-0.25978994, -0.44731685, -0.13260155, -0.5       ,  0.        , 
       -0.5       ])) 
(79, array([ 0. , -0.5])) 
/usr/local/lib/python2.7/dist-packages/matplotlib/collections.py:590: 
FutureWarning: elementwise comparison failed; returning scalar instead, but in 
the future will perform elementwise comparison 
  if self._edgecolors == str('face'): 

但我没有看到任何与实际分散输入数据相关的数据。也许这不是我需要查看的 ax.get_children()[2] 路径集合?