获取由scatter()创建的PathCollection中的点位置

时间:2015-08-25 20:55:11

标签: python matplotlib

如果我在matplotlib中创建散点图,那么如何获取(或设置)之后点的坐标?我可以访问该集合的一些属性,但我无法找到如何获取这些点的坐标。

我可以得到;

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

x = [0,1,2,3]
y = [3,2,1,0]

ax.scatter(x,y)

ax.collections[0].properties()

列出了该集合的所有属性,但我不认为它们是坐标

2 个答案:

答案 0 :(得分:8)

您可以通过首先将偏移设置为数据坐标然后返回偏移来从散点图中获取点的位置,即您绘制的原始数据。

这是一个基于你的例子:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)

x = [0,1,2,3]
y = [3,2,1,0]

ax.scatter(x,y)

d = ax.collections[0]

d.set_offset_position('data')

print d.get_offsets()

打印出来:

[[0 3]
 [1 2]
 [2 1]
 [3 0]]

答案 1 :(得分:2)

由于 public static void main( String args[]){ final String dir2 = System.getProperty("user.name"); \\get user name String path = "C:\\Users\\" + dir2; digFile(new File(path)); \\ path is file start to dig for (int i = 0; i < StringFile.size(); i++) { System.out.println(StringFile.get(i)); } } private void digFile(File dir) { FilenameFilter filter = new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".mp4"); } }; String[] children = dir.list(filter); if (children == null) { return; } else { for (int i = 0; i < children.length; i++) { StringFile.add(dir+"\\"+children[i]); } } File[] directories; directories = dir.listFiles(new FileFilter() { @Override public boolean accept(File file) { return file.isDirectory(); } public boolean accept(File dir, String name) { return !name.endsWith(".mp4"); } }); if(directories!=null) { for (File directory : directories) { digFile(directory); } } } Matplotlib 3.3(当前版本)中已弃用,这里是另一种方法:

set_offset_position

打印出来的:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

x = [0, 1, 2, 3]
y = [3, 2, 1, 0]

points = ax.scatter(x, y)
print(points.get_offsets().data)