matplotlib画图显示中文

9 篇文章 1 订阅
7 篇文章 0 订阅

 

网上资料比较少自己发现了,拿出来分享


 

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['FangSong']  # 制定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题

 


更新


目前我需要写中文论文。中文论文对你的插图字体和字号要求是有的,这就要求我的刻度是Times New Roman,label是宋体。

前提:环境是pyenv下的anaconda,

操作过程如下:

  1. 下周SimSun.ttf
  2. 把SimSun.ttf复制到.pyenv/versions/anaconda3-5.3.0/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf
  3. 删除~/.matplotlib/*
  4. 重新启动jupyter
  5. 然后plt.rcParams['font.sans-serif'] = ['SimSun'] # 指定宋体
  6. plt.xticks(fontproperties = 'Times New Roman', size = 15)#修改刻度的字体

通过以上步骤基本满足操蛋中文期刊的要求。

除了上述做法还有一个是:

参考:https://blog.csdn.net/gmr2453929471/article/details/78655834

不需要把这些字体copy到

/usr/local/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf/ 只需要告诉matplotlib路径就行了。

from matplotlib.font_manager import FontProperties
font=FontProperties(fname='/Library/Fonts/Hanzipen.ttc',size=10)
ax.set_xticklabels(ability_labels,fontproperties=font)

 

不足之处:如果你的label含有中英混合以及含有符号公式,中文需要宋体,英文需要Times New Roman,这个请参考我另一篇文章https://blog.csdn.net/cf_jack/article/details/111771887,不过那种方法,我死活无法将刻度字体改成New Times Roman。

 


更新

当我输入title是英文的时候而且含有上下标,我需要它是Times New Roman,但是总是不显示,解决办法:

plt.rcParams['font.family']='sans-serif' #用来正常显示中英文标签,包含sans和serif两个font family 

plt.rcParams['font.sans-serif']=['SimSun'] #用来正常显示中文标签 
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

plt.rcParams['mathtext.fontset'] = 'stix'  ##最关键的一步,stix是最接近Times New Roman
,因为我的title用了mathtex相关的语法
labelsize = 12.5
marketsize1 = 2
marketsize =0.85
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'

plt.figure(figsize=(6,4),dpi=800)
plt.title('${Fyk_1}$', 'size':18)

plt.rcParams['mathtext.fontset'] = 'stix',这一步很关键哦,参考:https://stackoverflow.com/questions/53679650/how-to-change-font-in-which-is-in-math-form-in-python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值