在利用matplotlib绘图时,常常需要添加图例与坐标轴名称,而在论文中,对中英文有严格的不同的字体要求,但默认的方法中(如下所示),无法分别为中文、英文指定不同字体(如下图),因此需要借助其他方法。

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 在python中,字体单位貌似是px,与pt间的换算关系为1pt=4/3px
simsun = FontProperities(fname=r'C:\Windows\Fonts\simsun.ttc', size=10)
plt.xlabel(u'Di距离', fontproperties=simsun)


经过摸索后发现text函数能够在指定位置按照指定字体与大小显示文字,因此可以通过调整文字位置来实现xlabel的功能并且能够按照指定字体分别显示中英文(如下图)。代码如下:

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from pylab import mpl, text
from matplotlib.font_manager import FontProperties
import numpy as np # windows下matplotlib显示中文一般有问题,需要专门进行设置才能正常显示
# 下面是两种设置的方式,使用时的参数也略有区别,在此不具体介绍
# 但需提前设置好,使得能够显示中文,否则中文字符位置显示为方框
simsun = FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc', size=10) # 宋体
roman = FontProperties(fname=r'C:\Windows\Fonts\times.ttf', size=10) # Times new roman
mpl.rcParams['font.sans-serif'] = ['SimSun']
fontcn = {'family': 'SimSun','size': 10} # 1pt = 4/3px
fonten = {'family':'Times New Roman','size': 10}plt.figure(1)
ax1 = plt.subplot(121)  # 左图
ax2 = plt.subplot(122)  # 右图
plt.sca(ax1)plt.xlim(0,150)
plt.ylim(0,0.08)
plt.xticks(range(0,160,10),rotation=0)
# 设置斜体-Times New Roman字体
text(60, -0.01, u'Di', style='italic', fontdict=fonten)
text(70, -0.01, u'距离', fontdict=fontcn)
text(85, -0.01, u'(km)', fontdict=fonten)
plt.ylabel(u"核密度", fontproperties=simsun)
plt.title(u"a.核密度")plt.sca(ax2)
plt.xlim(0,150)
plt.ylim(0,1)
plt.xticks(range(0,160,10),rotation=0)
plt.yticks(np.linspace(0,1,11))text(60, -0.13, u'Di', style='italic', fontdict=fonten)
text(70, -0.13, u'距离', fontdict=fontcn)
text(85, -0.13, u'(km)', fontdict=fonten)
plt.ylabel(u"累积概率", fontproperties=simsun)
plt.title(u"b.累积概率")
plt.show()

上述代码可直接运行,字体设置无误即可得到上图中的结果,但Di距离(km)可能会重叠或者空隙较大,这是正常情况,需要调整文字位置。text函数的前两个参数为其位置参数,都与其x轴、y轴坐标刻度有关,以<text(70, -0.01, u’距离’, fontdict=fontcn)为例,70说明其水平方向位置在坐标轴70处,-0.01说明其垂直方向位置在-0.01刻度处,按照这个规则即可以多种字体显示多段文字。


以上,欢迎留言交流~

matplotlib设置中英文多种字体混合坐标轴名称相关推荐

  1. MATLAB画图中英文不同字体混合显示标题、坐标轴标签(完美解决方案)

    MATLAB是吾等理工狗常用的求生工具.在画图时对中英文标题均支持较好,但学术出版物常常对字体有所要求.对于英文出版物一切好说,设置成相应字体即可.而对于中文出版物.中文毕业论文.报告,则常常需要混合 ...

  2. Python学习(1)---matplotlib中常用中文字体的对应名称

    Python绘图标注图时需要选择自己想要的中文字体,现有的中文字体对照表如下: 中文字体名称 ttf 代码设置 宋体 simsun SimSun 华文琥珀 STHUPO STHupo 楷体 simka ...

  3. 用python画论文图—中英文坐标轴名称

    用python给论文画图-中英文坐标轴名称 在编辑论文时,不同的期刊对画图的要求是不一样的,以目前期刊要求为例,用python画图,满足要求. 字体 ,要求的字体格式有两种:Euclid和宋体: (1 ...

  4. python画图,使用matplotlib和seaborn来设置图形的字体大小,坐标轴的线宽,风格,取值范围

    1. matplotlib 样式的设计 1.1 设置坐标轴的线框 如果我们要设置坐标轴的线宽,我们可以向下面这样做: import matplotlib.pyplot as plt###设置坐标轴的粗 ...

  5. R语言读取(加载)txt格式数据为dataframe、可视化绘制温度直方图、自定义设置坐标轴名称字体大小

    R语言读取(加载)txt格式数据为dataframe.可视化绘制温度直方图.自定义设置坐标轴名称字体大小 目录 R语言读取(加载)txt格式数据为dataframe.可视化绘制温度直方图.自定义设置坐 ...

  6. Matplotlib 设置支持中文的默认字体

    Matplotlib 设置支持中文的默认字体 问题描述 python 3.7 使用 matplotlib 时汉字显示为方框,如下: 问题原因 matplotlib 使用的默认字体不支持中文,需要更换绘 ...

  7. Matplotlib绘图-颜色,字体,刻度,label,tick_label,粗细,图例设置

    From: subce Tips 整理一下关于绘图的基本设置,主要包括: 自定义legend 二维图tick的长度和粗细 孪生x轴.y轴 设置二维图边框粗细 给三维图添加边框 设置三维图背景颜色为白色 ...

  8. Matlab:设置figure中英文不同字体

    Matlab:设置figure中英文不同字体   Matlab中,有时figure的title.legend或坐标轴需要既有中文,又有英文,且中文要求宋体.英文为Times New Roman,通常t ...

  9. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、为多个子图添加总标题(main title)、自定义设置主标题字体类型、字体大小、字体颜色等

    Python使用matplotlib函数subplot可视化多个不同颜色的折线图.为多个子图添加总标题(main title).自定义设置主标题字体类型.字体大小.字体颜色等 目录

最新文章

  1. RTOS诊断和错误检查
  2. 关于Linux发行版本RedHat9中文输入法使用问题的说明
  3. 皮一皮:我是谁,我在哪里,我的爸爸是哪个?
  4. 《高可用MySQL》2 – 单机版MySQL主从配置
  5. 【c++】标准模板库STL入门简介与常见用法
  6. Linux 命令之 sudoedit -- 以另外一个用户身份编辑文件
  7. 给公司的电脑配置theano
  8. Kafka——使用spring进行集成
  9. Q104:怎么用ray tracing画基于磨边楔形的“花环(Rosette)”
  10. Android - Broadcast机制
  11. 单库单服解决方案terraform部署实践
  12. UbuntuSkills
  13. K3wise数据字典及常用表及视图
  14. PLSQL 安装教程
  15. 大学生竞赛管理系统项目
  16. C语言《填数游戏》全流程
  17. Processing创意编程(入门篇)
  18. 围观神仙打架,反革命工程师《iOS应用架构谈 组件化方案》和蘑菇街Limboy的《蘑菇街 App 的组件化之路》的阅读指导
  19. 移动开发的软件开发生命周期介绍(二)
  20. Java毕业设计之ssm流浪猫狗|流浪狗宠物救助网站

热门文章

  1. Android图片加载Glide框架使用详解
  2. Redis 水滴石穿之(一)初识
  3. 2023第十六届“认证杯”数学建模网络挑战赛第一阶段比赛经历分享
  4. python实时获取Android FPS
  5. RESTful API?What is it?
  6. 英国禁用华为的5G设备,后者撤资83亿元予以反击
  7. MPU-6050资源介绍
  8. 用python写的修改内存值的一代代码(举例植物大战僵尸中文版)
  9. ExoPlayer 的小解析
  10. 电商项目实战第二节: CSS3+HTML5+JS 设计案例【考拉海购网站】之【搜索框那一栏】