使用Pandas Dataframe制作颜色托盘

问题描述

比方说,我有一个熊猫数据帧,其中一些单元格记录了RGB值:

import pandas as pd
df = pd.DataFrame(index=[i for i in range(0,3)],columns=[i for i in range(0,3)])
df.at[1,1] = [0,1] #Blue
df.at[1,2] = [1,0] #Red
df.at[0,0] = [0,1,0] #Green

数据框如下:

           0          1          2
0  [0,0]        NaN        NaN
1        NaN  [0,1]  [1,0]
2        NaN        NaN        NaN

现在,我的问题是:如何从中绘制出一个看起来像正方形网格并且所有NaN都绘制为白色的图?

解决方法

看起来您应该使用numpy而不是pandas。熊猫本质上是一个二维库,通过在单元格中包含列表,您基本上可以添加第三维。看来您可以拥有一个3-D numpy数组,其中所有NaN均应为[255,255,255]

例如

import matplotlib.pyplot as plt

white = [255,255]
arr = np.array([[[0,1,0],white,white],[white,[0,1],[1,0]],white]])

>>> plt.imshow(arr)

enter image description here

所有黑色正方形看起来都一样,而且实际上是黑色的,因为[1,0][0,1]之间的差异与[0,0]的差别不大。如果您更改它们以获取更多彩色图像,则可以更轻松地发现差异:

enter image description here

arr = np.array([[[50,111,444],[100,200,200],50,white]])