问题描述
我在 Windows10 上使用 python3 可视化我的数据,如下所示。我尝试隐藏颜色条的刻度和刻度标签,并在颜色条内绘制文本。
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
data = 20 + 100*np.random.rand(30,30)
#print(data)
plt.imshow(data)
cbar = plt.colorbar(ticks= [],pad=0.015,aspect=12)
x = 10
for index,label in enumerate([str(np.round(np.amin(data),1)),str(np.round(np.amax(data),1))]):
y = np.amin(data) + 0.1*(np.amax(data) - np.amin(data)) + 0.7*index*(np.amax(data) - np.amin(data))
if index == 0:
cbar.ax.text(x,y,label,rotation=90,va='center',color='white',fontsize=16)
else:
cbar.ax.text(x,color='black',fontsize=16)
plt.show()
结果
颜色条内的文本不知何故未对齐。如何使颜色条内的文本居中对齐?脚本中x
的值有什么建议吗?
解决方法
您可以使用 0.5
作为 x 位置和 yaxis transform(数据中的 y 轴,轴坐标中的 x 轴)。
for index,label in enumerate([str(np.round(np.amin(data),1)),str(np.round(np.amax(data),1))]):
y = np.amin(data) + 0.1 * (np.amax(data) - np.amin(data)) + 0.7 * index * (np.amax(data) - np.amin(data))
cbar.ax.text(0.5,y,label,rotation=90,va='center',ha='center',color='white' if index == 0 else 'black',fontsize=16,transform=cbar.ax.get_yaxis_transform())