matplotlib热映射某些条目缺少值

matplotlib热映射某些条目缺少值,matplotlib,plot,grid,heatmap,Matplotlib,Plot,Grid,Heatmap,现在我的数据如下所示: nn = ["1W", "1F", "1V",,,,,"2W", "2F", "2V",,,,,"260W", 261F', "261V",,,,] value=[1.15, 0.67, 0.88..........] 基本上,每个数字对应的字母数相同。总共19封信。我有4798个号码。基本上,我的列表中有4978*19点 我有另一个列表,如下所示: nn = ["1W", "1F", "1V",,,,,"2W", "2F", "2V",,,,,"260W", 261

现在我的数据如下所示:

nn = ["1W", "1F", "1V",,,,,"2W", "2F", "2V",,,,,"260W", 261F', "261V",,,,]
value=[1.15, 0.67, 0.88..........]
基本上,每个数字对应的字母数相同。总共19封信。我有4798个号码。基本上,我的列表中有4978*19点

我有另一个列表,如下所示:

nn = ["1W", "1F", "1V",,,,,"2W", "2F", "2V",,,,,"260W", 261F', "261V",,,,]
value=[1.15, 0.67, 0.88..........]
每个值对应于我的nn列表中的字符。这意味着我的值列表中有4978*19个值

基本上,我想要一个2D网格图,x轴对应于数字,y轴对应于字母。每个单元格表示值。我需要不同的颜色来呈现不同的价值。也许一种颜色可以覆盖一系列的值。就像红色代表1-10,蓝色代表10-20?? 为了更好地理解我想要策划的。我用手画了一个情节来形象化

我可以将nn列表拆分为x-AIX和y轴

x_axis = [1,2,3,.......4978]

y_axis = ["W", "V", "F", .....] #19 in total
我可能遇到的一个问题是,因为我有太多的数字。情节看起来会很宏大。所以也许我可以把一个大屁股的阴谋分成几个小情节


此外,我的值列表中的某些条目可能缺少数据,如值[100]='',或值[101]='infinity'。点是len(值)仍然等于4978*19。所以我还需要一些颜色来表示不足的数据

根据您所显示的
nn
,看起来相应的值是有序的。 因此,我认为可以将列表转换为2D NumPy数组

values = np.array(values).reshape((19, 4978))
然后使用
plt.imshow(值)
绘制它们。比如说,

import numpy as np
import matplotlib.pyplot as plt

# generate some random values
values = np.random.random(19*4978).tolist()

# convert the list to a 2D NumPy array
values = np.array(values).reshape((19, 4978))
h, w = values.shape

fig, ax = plt.subplots()
plt.imshow(values)
plt.colorbar()
plt.yticks(np.arange(h), list('PNIYLKCVFWABCDEFGHI'))
ax.set_aspect(w/h)
plt.show()


请注意,虽然默认的颜色映射viridis没有示例中的颜色那么丰富 你画的,它确实有一些。也许最 重要的是,颜色的“强度”很好地对应于颜色 单调递增的比例。因此,您可以直观地“读取”值 由绘图中的颜色表示。对于使用 彩色的
jet
colormap,或者像您建议的1--10是 红色,10-20是蓝色,等等。读者将被迫 经常参考颜色栏或图例,检查颜色之间的对应关系
颜色和值。

还有一个问题,如果缺少一些数据怎么办?缺少Like值[0][0]?我尝试使用值[0][0]=''进行绘图。但它只是对我说无法将字符串转换为浮点。就像我需要一些颜色来表示“数据不足”一样,我可以说,如果值[0][0]='',颜色='灰色'?,谢谢,我找到了答案。如果某个条目缺少数据,我可以将其设置为np.nan。它将在绘图上显示为白色,表示缺少数据。