使用 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]])
假设我有一个 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]])