【发布时间】:2019-12-27 12:15:39
【问题描述】:
我正在尝试使用 Seaborn 创建一个散点图,它将小缩略图图像作为标记而不是默认标记(圆形、十字形、正方形等)。每张图片都是不同的,并且必须遵循贯穿我整个 Pandas 数据框的唯一 ID。
我可以使用普通标记很好地创建绘图,但我希望在散点图中看到我的 24x24 小缩略图。这将使我能够直观地确认我之前的分析步骤不是垃圾。我的数据框结构如下:
uniqueID x y path kmeans
1 3.4 2.1 'C:\Images\imageid1.jpg' 7
2 0.2 5.3 'C:\Images\imageid2.jpg' 4
3 4.0 3.9 'C:\Images\imageid3.jpg' 7
...
当使用sns.scatterplot() 定义散点图时,我尝试将路径读取为标记,我还尝试先使用 PIL 将图像读取到数据框中的新列并将它们读取为标记,但这些方法可以不行。 Seaborn 自己的文档没有显示如何使用缩略图作为标记来绘制散点图。这是我的相关代码:
plt.figure(figsize=(9,8))
sns.scatterplot(
x="x", y="y",
hue="kmeans",
palette=sns.color_palette("hls", 8),
data=df,
marker=df['path'],
legend="full",
alpha=0.30
)
我希望创建一个散点图,其中每个标记都替换为其对应的图片。
【问题讨论】:
-
没有图像/文件作为标记的 API;既不在seaborn,也不在matplotlib中。所以你需要做的是循环遍历数据框并在你想要显示的位置创建一个新图像。
标签: python pandas image matplotlib seaborn