使用 Pandas Dataframe 制作调色板

Make a color pallet with Pandas Dataframe

假设我有一个 pandas 数据框,其中一些单元格记录了 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,0,1] #Blue
df.at[1,2] = [1,0,0] #Red
df.at[0,0] = [0,1,0] #Green

数据框如下所示:

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

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

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

例如

import matplotlib.pyplot as plt

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

>>> plt.imshow(arr)

黑色方块看起来都一样,而且真的是黑色,因为 [1, 0, 0][0, 0, 1][0, 0, 0] 相差不大。如果您将它们更改为更多彩色图像,则更容易发现差异:

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