从十进制x,y颜色对之间具有未定义像素的数据帧绘制逐像素图像(例如,对于plt.imshow进行绘制)

问题描述 投票:0回答:1

我有一个专有生物医学成像软件生成的相当奇怪的数据集,其中xy坐标是正负十进制数字。第三列定义每个像素的颜色编码。所述软件使用该数据帧来显示数据图像。

                x        y color
        -3928.684 14731.07 #000000
        -3978.529 14723.26 #000000
        -3771.280 14705.59 #000000
        -3821.124 14697.77 #000000
        -3870.969 14689.96 #000000
        -3920.813 14682.15 #000000
                     .
                     .
                     .
        39305.46 12059.70 #E5D8BD
        39301.40 12109.54 #E5D8BD
        39297.35 12159.39 #E5D8BD
        39293.30 12209.24 #E5D8BD
        39289.24 12259.08 #E5D8BD
        39285.19 12308.93 #E5D8BD

Shape: (93149, 3)

我想用Python逐像素绘制相同的图像(具有相同的宽高比)。但是,如果xy坐标包含负数和十进制数字,该怎么办?

[我试图通过将xy坐标乘以足够大的数字以使它们不再是小数来解决上述问题:

import pandas as pd

sampleData = "https://www.dropbox.com/s/xvn8a06x5abtvz8/DATA_TMP.csv?dl=1"
df_matrix = pd.read_csv(sampleData, index_col=0)
tmpdata[tmpdata.color == 'black'] = '#000000'

df_matrix['x'] = (df_matrix.x + 100000) * (10**20)
df_matrix['y'] = (df_matrix.y + 100000) * (10**20)

df_matrix['x'] = df_matrix['x'] - np.min(df_matrix['x'])
df_matrix['y'] = df_matrix['y'] - np.min(df_matrix['y'])
在这种情况下,我仍然有

主要问题,此数据矩阵仅包含图像上那些必须使用给定颜色绘制对象的那些位置的xy坐标。本身会生成此数据的软件会将所有对象放在白色背景上。

我如何将这个数据集绘制为一个逐个像素的图像尊重xy坐标定义的像素位置,并在绘制color列时为它们着色未定义两个位置之间的像素时在白色背景上显示对象吗?

python matplotlib
1个回答
0
投票

您可以只使用scatter

sampleData = "https://www.dropbox.com/s/xvn8a06x5abtvz8/DATA_TMP.csv?dl=1"
df_matrix = pd.read_csv(sampleData, index_col=0)

# you only want to change `color` column
df_matrix.loc[df_matrix.color == 'black', 'color'] = '#000000'

plt.scatter(df_matrix['x'],df_matrix['y'], s=1, c=df_matrix['color'])
plt.show()

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.