python学习 - 图标签用宋体&Times New Roman字体 + 规范的混淆矩阵绘制 只需复制下面一行代码即可获得效果
中文:宋体字号
英文和数字:Times New Roman字体
from matplotlib import rcParamsconfig = {
"font.family": 'serif', # 衬线字体
"font.size": 10, # 相当于小四大小
"font.serif": ['SimSun'], # 宋体
"mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大
'axes.unicode_minus': False # 处理负号,即-号
}
rcParams.update(config)
下面以绘制一个混淆矩阵进行验证
#####----导入包----#
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap, LinearSegmentedColormap
from matplotlib.offsetbox import (TextArea, DrawingArea, OffsetImage,AnnotationBbox)
from matplotlib.cbook import get_sample_data
from matplotlib import rcParamsconfig = {
"font.family": 'serif', # 衬线字体
"font.size": 10, # 相当于小四大小
"font.serif": ['SimSun'], # 宋体
"mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大
'axes.unicode_minus': False # 处理负号,即-号
}
rcParams.update(config)# 定义混淆矩阵绘制函数
def plot_confusion_matrix(cm,cmap, title='混淆矩阵'):
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title, fontsize = 11)
plt.colorbar()
xlocations = np.array(range(len(labels)))
plt.xticks(xlocations, labels, rotation=90, fontsize = 10)
plt.yticks(xlocations, labels, fontsize=10)
plt.ylabel('真实标签', fontsize=11)
plt.xlabel('预测标签', fontsize = 11)###---输入数据---###
# 这一块也是你需要按照自己需求要改的
test_true_label = [1,1,1,0,0,2,2,2,2,3,3,3,3,3]#测试集真实标签
test_pre_label = [1,1,1,0,0,2,2,2,1,3,3,3,0,3]#测试集预测标签# 注意: 外圈故障:0, 内圈故障:1滚动体故障:2正常:3
# 因此是先将 test_true_label从0-3排列好,再与labels一一对应起来
labels = ['外圈故障', '内圈故障', '滚动体故障','正常']#图片显示的横纵坐标标签
tick_marks = np.array(range(len(labels))) + 0.5colors = [ "white", "orange"]#颜色渐变色是从白到橘色
cmap1 = LinearSegmentedColormap.from_list("mycmap", colors)###---转换成混淆矩阵---###
cm = confusion_matrix(test_true_label, test_pre_label)
np.set_printoptions(precision=2)
cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print('混淆矩阵:\n',cm)###---绘图---###
plt.figure(figsize=(3, 3), dpi=500)
ind_array = np.arange(len(labels))
x, y = np.meshgrid(ind_array, ind_array)for x_val, y_val in zip(x.flatten(), y.flatten()):
c1 = cm_normalized[y_val][x_val]
c2 = cm[y_val][x_val]
if c1 > 0.0001:
plt.text(x_val, y_val, "%d/%0.2f" % ( c2, c1), color='black', fontsize=10, va='center', ha='center')plt.gca().set_xticks(tick_marks, minor=True)
plt.gca().set_yticks(tick_marks, minor=True)
plt.gca().xaxis.set_ticks_position('none')
plt.gca().yaxis.set_ticks_position('none')
plt.grid(True, which='minor', linestyle='-')
plt.gcf().subplots_adjust(bottom=0.15)plot_confusion_matrix(cm_normalized, cmap=cmap1, title='混淆矩阵')
# save_file_path= 'E:\研究生\pytorch\随机森林-混淆矩阵.png'
# plt.savefig(save_file_path, dpi=500,bbox_inches='tight')
>>>结果输出
混淆矩阵:
[[2 0 0 0]
[0 3 0 0]
[0 0 4 0]
[0 0 0 5]]
文章图片
【学习资料记录|python学习 - 图标签用宋体&Times New Roman字体 + 规范的混淆矩阵绘制】这样出的图是不是很好看,千万不要黑底红字!!!不然导师骂惨
下面是错误示范
文章图片
推荐阅读
- 学习资料记录|故障诊断方向 - 就业企业推荐
- 蓝桥杯Python|蓝桥杯VIP题目免费提交,内含超详解,步步截图!!!
- 如何将多张图片合成mp4视频格式,并加入背景音乐...
- 异常检测|Graph Anomaly Detection with Deep Learning——图检测
- python|python import 搜索包路径的机制,以及添加自定义python包的方法
- GCN|Graph Anomaly Detection with Deep Learning——子图检测
- 社区发现|CommDGI: Community detection oriented deep graph infomax 2020 CIKM
- android|android-19_如何在Android上关闭COVID-19曝光跟踪和通知
- python|iphone玩游戏关闭通知_如何在iPhone上关闭COVID-19曝光记录和通知