pso*_*res 22 python django matplotlib labels
我一个月前开始使用matplotlib,所以我还在学习.
我正在尝试用matshow做热图.我的代码如下:
data = numpy.array(a).reshape(4, 4)
cax = ax.matshow(data, interpolation='nearest', cmap=cm.get_cmap('PuBu'), norm=LogNorm())
cbar = fig.colorbar(cax)
ax.set_xticklabels(alpha)
ax.set_yticklabels(alpha)
Run Code Online (Sandbox Code Playgroud)
其中alpha是django中带有4个字段的模型:'ABC','DEF','GHI','JKL'
事情是,我不知道为什么,标签'ABC'没有出现,留下最后一个没有标签的单元格.
如果有人想知道如何修改我的脚本以显示'ABC'的方式我将不胜感激:)
Joe*_*ton 46
发生的事情是当使用matshow时,xticks实际上扩展到显示的图形之外.(我不太确定为什么会这样.但我几乎从未使用过matshow.)
为了证明这一点,请查看输出ax.get_xticks()
.在你的情况下,它是array([-1., 0., 1., 2., 3., 4.])
.因此,当您设置xtick标签时,"ABC"位于<-1,-1>,并且不会显示在图上.
最简单的解决方案就是在您的标签列表中添加空白标签,例如
ax.set_xticklabels(['']+alpha)
ax.set_yticklabels(['']+alpha)
Run Code Online (Sandbox Code Playgroud)
作为一个完整的例子:
import numpy as np
import matplotlib.pyplot as plt
alpha = ['ABC', 'DEF', 'GHI', 'JKL']
data = np.random.random((4,4))
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(data, interpolation='nearest')
fig.colorbar(cax)
ax.set_xticklabels(['']+alpha)
ax.set_yticklabels(['']+alpha)
plt.show()
Run Code Online (Sandbox Code Playgroud)
小智 11
另一种方法是指定刻度,然后设置相应的标签。那么你就不用担心额外的越界勾号了。这在很多 matplotlib 演示中都会出现。所以在这里,请注意额外的调用ax.set_xticks
和ax.set_yticks
import numpy as np
import matplotlib.pyplot as plt
alpha = ['ABC', 'DEF', 'GHI', 'JKL']
data = np.random.random((4,4))
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(data, interpolation='nearest')
fig.colorbar(cax)
xaxis = np.arange(len(alpha))
ax.set_xticks(xaxis)
ax.set_yticks(xaxis)
ax.set_xticklabels(alpha)
ax.set_yticklabels(alpha)
plt.show()
Run Code Online (Sandbox Code Playgroud)