我有一个专有生物医学成像软件生成的相当奇怪的数据集,其中x
和y
坐标是正负十进制数字。第三列定义每个像素的颜色编码。所述软件使用该数据帧来显示数据图像。
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逐像素绘制相同的图像(具有相同的宽高比)。但是,如果x
和y
坐标包含负数和十进制数字,该怎么办?
[我试图通过将x
和y
坐标乘以足够大的数字以使它们不再是小数来解决上述问题:
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'])
在这种情况下,我仍然有主要问题,此数据矩阵仅包含图像上那些必须使用给定颜色绘制对象的那些位置的x
和y
坐标。本身会生成此数据的软件会将所有对象放在白色背景上。
我如何将这个数据集绘制为一个逐个像素的图像尊重x
和y
坐标定义的像素位置,并在绘制color
列时为它们着色未定义两个位置之间的像素时在白色背景上显示对象吗?
您可以只使用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()
输出: