matplotlib绘制双柱状图(解决中文乱码,英文使用Times New Roman)

中文字体和乱码使用全局配置设置,英文的字体可以再单独设置

导出为矢量图格式,因为legend位置放到图像外部,所以可能会导致导出的图片不完整,使用subplots_adjust(right=0.75)函数调整

import numpy as np
import matplotlib.pyplot as plt
# 修改全局配置,解决中文乱码 中文使用宋体
font_options = {
    'family' : 'serif', # 设置字体家族
    'serif' : 'SimSun', # 设置字体
}
plt.rc('font',**font_options)
fig,ax = plt.subplots()

size = 4
x = np.arange(size)
# 两个柱子 分别设置数据
a = [0.710,0.765,0.798,0.762]
b = [0.84,0.892,0.902,0.895]

total_width, n = 0.8, 2
width = total_width / n
x = x - (total_width - width) / 2
x_labels = ['NBC','C4.5','SVM','KNN']

plt.bar(x, a,  width=width, label='DIA_RED')
plt.bar(x + width, b, width=width, label='DIFS-FI')
# 设置x轴刻度 size设置字体大小,fontproperties设置字体样式
plt.xticks(width/2+x,x_labels,fontproperties = 'Times New Roman',size=16)
# 设置y轴刻度的字体和大小
plt.yticks(fontproperties = 'Times New Roman',size=16)
# 设置y轴 16单位是像素  相当于word中的小四
plt.ylabel('分类准确率',size=16)
# 设置图片标题
plt.title('不同分类器下的准确率',size=16)
# label显示在右外侧
plt.legend(fontsize=16,loc=3, bbox_to_anchor=(1.05, 0.5),prop={'family':'Times New Roman'})
# 解决导出svg格式的时候,图片外侧显示不全的问题
fig.subplots_adjust(right=0.75)
# 保存图片为svg格式
plt.savefig("backup-large.svg", format="svg")

在这里插入图片描述

plt.legend()方法参数取值
loc表示legend的位置,bbox_to_anchor(num1,num2)表示legend与图像的关系,num1表示水平位置,num2表示垂直位置,表示左上角,(1,1)表示右下角(0,0)在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值