问题描述
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)
所有黑色正方形看起来都一样,而且实际上是黑色的,因为[1,0]
和[0,1]
之间的差异与[0,0]
的差别不大。如果您更改它们以获取更多彩色图像,则可以更轻松地发现差异:
arr = np.array([[[50,111,444],[100,200,200],50,white]])