尝试在matplotlib中使用注释绘制图像,但重叠使它们无法读取

时间:2016-08-17 03:52:53

标签: python matplotlib graph charts annotations

我正在编写一个脚本来根据它们的特征对图像进行分类:直方图,色彩平衡,关键点计数等。尽管我为显示图表而编写的功能运行良好:

fig,axes = plt.subplots(2,3,figsize=(15,7))

axes[0, 0].scatter((zip(*xy_a))[0], (zip(*xy_a))[1])
for i, txt in enumerate(xy_na): axes[0, 0].annotate(txt, ((zip(*xy_a))[0][i],(zip(*xy_a))[1][i]))
axes[0, 0].set_title("xy_a")
axes[0, 0].set_xlabel('Histogram')
axes[0, 0].set_ylabel('Average Pixel')

axes[1, 0].scatter(*zip(*xy_b))
for i, txt in enumerate(xy_na): axes[1, 0].annotate(txt, ((zip(*xy_b))[0][i],(zip(*xy_b))[1][i]))
axes[1, 0].set_title("xy_b")
axes[1, 0].set_xlabel('Average Pixel')
axes[1, 0].set_ylabel('Keypoint Number')

axes[0, 1].scatter(*zip(*xy_c))
for i, txt in enumerate(xy_na): axes[0, 1].annotate(txt, ((zip(*xy_c))[0][i],(zip(*xy_c))[1][i]))
axes[0, 1].set_title("xy_c")
axes[0, 1].set_xlabel('Keypoint Number')
axes[0, 1].set_ylabel('Histogram')

axes[1, 1].scatter(*zip(*xy_d))
for i, txt in enumerate(xy_na): axes[1, 1].annotate(txt, ((zip(*xy_d))[0][i],(zip(*xy_d))[1][i]))
axes[1, 1].set_title("xy_d")
axes[1, 1].set_xlabel('Dimentional Mean')
axes[1, 1].set_ylabel('Histogram')

axes[0, 2].scatter(*zip(*xy_e))
for i, txt in enumerate(xy_na): axes[0, 2].annotate(txt, ((zip(*xy_e))[0][i],(zip(*xy_f))[1][i]))
axes[0, 2].set_title("xy_e")
axes[0, 2].set_xlabel('Average Pixel')
axes[0, 2].set_ylabel('Dimentional Mean')

axes[1, 2].scatter(*zip(*xy_f))
for i, txt in enumerate(xy_na): axes[1, 2].annotate(txt, ((zip(*xy_f))[0][i],(zip(*xy_f))[1][i]))
axes[1, 2].set_title("xy_f")
axes[1, 2].set_xlabel('Keypoint Number')
axes[1, 2].set_ylabel('Dimentional Mean')

fig.tight_layout()
fig.suptitle("Folder: {}".format ((str(folder_path)).split("/")[-1]))

plt.show()

它生成的图表不太可读:

enter image description here

该文件夹中有13张图片:11张面部照片和2张团体照片。现在,它不是完全不可读,但是当我在一个包含100张图像的文件夹上运行时会发生什么?

重叠注释还有其他答案,但它们都不适用于我的单行注释方案。如果有人能找到我的问题的解决方案,那就太好了。

1 个答案:

答案 0 :(得分:1)

我建议,不要一直显示所有注释,只需在单击数据点时显示注释。同样的数据点也可以在其他子图中突出显示。

有关如何实现此目的的示例,请参阅this cookbook recipe