我使用以下代码来生成一种二进制热图:
import numpy as np
import matplotlib.colors as mlc
import matplotlib.pyplot as mlp
states = ['AAAA', 'BBBB', 'CCCC', 'DDDD']
walk = [1, 2, 3, 2, 3, 2, 3, 2, 3, 2]
states_len = len(states)
walk_len = len(walk)
img = np.zeros((states_len, walk_len), dtype=float)
for i, s in enumerate(walk):
img[s, i] = 1.0
figure, ax = mlp.subplots()
color_map = mlc.LinearSegmentedColormap.from_list('ColorMap', [(1.000, 1.000, 1.000), (0.984, 0.501, 0.447)])
ax.imshow(img, cmap=color_map, interpolation='none')
ax.set_xlabel('Steps', fontsize=13)
ax.set_xticks(np.arange(0, walk_len, 1))
ax.set_xticks(np.arange(-0.5, walk_len, 1), minor=True)
ax.set_xticklabels(np.arange(1, walk_len + 1, 1))
ax.set_ylabel('States', fontsize=13)
ax.set_yticks(np.arange(0, states_len, 1))
ax.set_yticks(np.arange(-.5, states_len, 1), minor=True)
ax.set_yticklabels(states)
ax.grid(which='minor', color='k')
ax.set_title('Walkplot (Sequence)', fontsize=15, fontweight='bold')
它产生了奇怪的结果:
您可能会注意到,色点看起来与网格方块没有对齐。最重要的是,有时网格线没有统一的尺寸,有些看起来比其他的大。
我认为它一定与纵横比或图形大小有关,但我对潜在的修复方案一无所知。我该如何解决这个问题?
我当前的设置:
- Python 3.6 x64
- 皮查姆 2018.1