如何在子图中显示所有的标签。我有12个标签,我必须绘制一个混淆矩阵。但是只有6个标签是可见的

我想绘制12个数据的混淆矩阵,所以我做了12个标签来绘制混淆矩阵,12个数据的绘图是正确的,但是x标签和y标签只显示了一半。

我使用了这个代码段–。

import matplotlib.pyplot as plt

labels = ['1','2','3','4','5','6','7','8','9','10','11','12']
cm = confusion_matrix(actualList, predictList, labels)
print(cm)
fig = plt.figure()
fig.set_figheight(10)
fig.set_figwidth(10)
ax = fig.add_subplot()
cax = ax.matshow(cm)
plt.title('Confusion matrix of the classifier',pad=-570)
fig.colorbar(cax)
ax.set_xticklabels([''] + labels)
ax.set_yticklabels([''] + labels)
plt.setp(ax.get_xticklabels(), rotation=30, ha="left",
         rotation_mode="anchor")
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()

得到的结果是这样的

enter image description here

解决方案:

当你有多个类别时,matplotlib会给坐标轴贴上不正确的标签。为了解决这个问题,你可以从matplotlib.ticker中导入MultipleLocator来强制每个单元格都贴上标签。

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator;

# the same values in your confusion matrix
labels = ['1','2','3','4','5','6','7','8','9','10','11','12']
cm = [[0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 1099, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 131, 23, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 40, 0, 0, 3, 0, 0, 0, 0, 0, 0],
    [0, 0, 43, 0, 0, 0, 31, 0, 0, 0, 0, 0],
    [0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 269, 0, 0, 0, 0, 0, 86, 0, 0, 6],
    [0, 0, 101, 0, 0, 0, 0, 0, 0, 45, 0, 1],
    [0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 283, 0, 0, 0, 0, 0, 0, 0, 0, 204]]

fig = plt.figure()
fig.set_figheight(10)
fig.set_figwidth(10)
ax = fig.add_subplot()
cax = ax.matshow(cm)
plt.title('Confusion matrix of the classifier',pad=-570)
fig.colorbar(cax)

ax.xaxis.set_major_locator(MultipleLocator(1))
ax.yaxis.set_major_locator(MultipleLocator(1))

ax.set_xticklabels([''] + labels)
ax.set_yticklabels([''] + labels)
plt.setp(ax.get_xticklabels(), rotation=30, ha="left",
         rotation_mode="anchor")
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()

enter image description here

给TA打赏
共{{data.count}}人
人已打赏
未分类

vaex对象dtype dtype('O')没有原生的HDF5等价物。

2022-9-21 0:55:19

未分类

调用由AAD保护的Azure函数。

2022-9-21 0:55:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索