前段时间在IP102数据集上做了一些实验,在测试集上的预测结果通过文本的方式不便于直接观察,于是有了一些可视化的需求:可视化数据的原始分布和各类别的预测情况。
分析
可视化数据的原始分布直接通过 plt.bar() 画柱形图就行,各类别的预测情况通过 matshow() 函数画出混淆矩阵也很方便观察。
但是混淆矩阵只是通过颜色来展示数据相对的大小,我还想通过图来看数据之间的绝对大小,也就是说我想把这两个需求放在一张图里...
那么在原始柱形图的基础上,画各类别预测情况的折线图也不是一个难事,但是当预测类别太多的时候,多条折线图糊在一起可太难观察了!于是又产生了新的需求:鼠标点击某个柱形(类别)时,显示该类别测试数据在各类别上的预测情况。
代码
这里的数据是使用某网络对IP102中水稻的14类虫害的预测结果。 本文主要想分享的是自己突发奇想的可视化方法和matplotlib鼠标点击事件的实现,相关的json文件读取、数据获取等代码这里就不粘了,需要使用的数据都直接粘在main函数里。下面是copy过去可以直接跑的代码:
import random
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
# 随机生成