绘制1D Ising链时全同自旋场景下colormap/colorbar显示异常如何解决
出现该问题的核心原因是plt.imshow()默认会根据输入数组的最值动态调整颜色映射的取值范围:当数组中所有元素值相同时,最大值与最小值相等,颜色范围塌缩,就会出现colormap和colorbar显示异常的情况。
你只需要在调用imshow时手动指定vmin和vmax参数,固定颜色映射的上下边界为-1和1即可解决该问题,修改后的代码如下:
L = 100 # chain可替换为Metropolis算法输出的自旋链结果 chain = np.random.choice([-1,1], L) new = np.reshape(chain,(1,100)) plt.figure() # 新增vmin、vmax参数固定颜色映射范围 plt.imshow(new, cmap=plt.cm.get_cmap('gray', 2), vmin=-1, vmax=1) plt.colorbar(ticks= (-1,1), label='spin', shrink = 0.25) plt.show()
修改后无论自旋链最终是全向上、全向下还是混合态,灰度映射都会严格对应-1和1的取值,colorbar也会正常显示两个刻度。
内容的提问来源于stack exchange,提问作者Tim Johnson
相关产品推荐
相关产品推荐

