现在我的数据看起来像这样:
nn = ["1W", "1F", "1V",,,,,"2W", "2F", "2V",,,,,"260W", 261F', "261V",,,,]
基本上每个数字都有相同数量的字母。总共19个字母。我有4798个号码。基本上,我的名单中有4978 * 19分。
我有另一个列表如下:
value=[1.15, 0.67, 0.88..........]
每个值对应于我的nn列表中的字符。这意味着我的值列表中有4978 * 19个值。
基本上,我想要一个2D网格图,其中x轴对应于数字,y轴对应于字母。每个单元格代表该值。我需要不同的颜色来呈现不同的价值观。也许一种颜色涵盖了一系列的价值观。比如红色代表1-10,蓝色代表10-20? 为了更好地了解我想要绘制的内容。我手绘了一个可视化的情节。
我可以将我的nn列表分成x-aixs和y-axis。
x_axis = [1,2,3,.......4978]
y_axis = ["W", "V", "F", .....] #19 in total
我可能遇到的一个问题是因为我有这么多数字。情节看起来很棒。所以也许我可以将一个大屁股情节分成子图?
此外,我的值列表中的某些条目可能缺少数据,如值[100] ='',或类似值[101] ='无穷大'。点是len(值)仍然等于4978 * 19。所以我也想要一些颜色来表示数据不足。
答案 0 :(得分:1)
鉴于您对nn
所展示的内容,看起来相应的值是有序的。
因此,我认为您可以将列表转换为2D NumPy数组
values = np.array(values).reshape((19, 4978))
然后使用plt.imshow(values)
绘制它们。例如,
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,并不像示例那样丰富多彩
你画了,它确实有一些very interesting
features。也许是最多的
重要的是颜色的“强度”很好地对应于a
单调增加规模。因此,您可以直观地“读取”该值
由图中的颜色表示。使用的情节不能说同样的情节
彩色jet
色彩映射,或者像你提出的1-10色彩映射
红色和10--20是蓝色等。读者将被迫
不断地参考颜色栏或图例来检查之间的对应关系
颜色和价值观。