我有以下numpy数组:
([[ 0, 0, 0, 0, 0, 0, 27, 541, 1296, 10000],
[ 0, 0, 0, 0, 1, 44, 355, 1998, 3272, 10000],
[ 0, 0, 0, 2, 18, 209, 1069, 3239, 4670, 10000],
[ 0, 0, 0, 10, 96, 486, 1522, 3954, 5379, 10000],
[ 0, 0, 2, 28, 216, 748, 2127, 4769, 6011, 10000],
[ 0, 0, 18, 82, 379, 1200, 2867, 5395, 6528, 10000],
[ 0, 3, 39, 147, 599, 1489, 3237, 5740, 6909, 10000],
[ 0, 6, 48, 246, 759, 1777, 3610, 6034, 7144, 10000],
[ 0, 12, 90, 324, 1009, 2072, 3980, 6365, 7466, 10000],
[ 1, 12, 119, 438, 1103, 2337, 4215, 6594, 7568, 10000]])
我想要的是创建灰色的表/图像,其中较大的数字是较暗的颜色。 另外,我想将x& y轴设置为定义的值。
x-axis : [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
y-axis : [500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4200, 4500]
到目前为止,我一直在玩imshow,效果不理想。
fig, ax1 = plt.subplots(1,1)
ax1.imshow(np.flipud(x), cmap='Greys', interpolation='nearest', extent=[100,1001,500,4501])
ax1.set_xticklabels(xaxis)
ax1.set_yticklabels(yaxis)
ax1.grid()
fig.show()
首先图像应该是正方形,第二次插值会模糊范围的精确度(网格位于单元格的中间而不是边缘)。
答案 0 :(得分:3)
这会是一个令人满意的结果吗?
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="white")
cmap = sns.color_palette("Greys", 8)
f, ax = plt.subplots(figsize=(10, 10))
ax = sns.heatmap(x, cmap=cmap, vmax=10000, vmin=0,
square=True, linewidths=.5, cbar_kws={"shrink": .5},
xticklabels=[100, 200, 300, 400, 500, 600, 700, 800, 900, 1000],
yticklabels=[4500, 4200, 4000, 3500, 3000, 2500, 2000, 1500, 1000, 500])