爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 255|回复: 0

[经验总结] 解决matplotlib中英文显示问题-读取grib文件并作图

[复制链接]

新浪微博达人勋

发表于 2024-7-31 01:07:35 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 忽忽儿 于 2024-7-31 11:37 编辑

     从最开始学python到现在,发现很多时候考验的不是咱编程的技巧,而是如何平衡各种package的版本,以完成最终程序整体能够完美运行。
     package多既是python的优势,也凭添了许多烦恼。近期在做一项工作,从天擎读取各省拼接的指导预报并作图,发现国家局天擎存储的文件都是grib格式,似乎还不是规范格式的,比nc读起来要麻烦一点(用meteva读取grib的程序失败了,也许是我没找到更好的办法,如大佬有方法望赐教)。
    最终选择了pygrib+matplotlib+cartopy的配置来实现这个功能,延用了metdig的作图习惯,选择python3.8+cartopy0.19,然而默默发现高版本matplotlib和cartopy不兼容,只能安装3.6以下版本,这就导致matplotlib设置字体族(同时在一句话中分别设置中英文字体)的新功能难以实现。尝试了各种低版本的设置字体语句,依旧没有实现,当然也可以分别输入中英文、分别设置字体,或者让数字以中文字体显示而非times new roman,但这确实不是一个做了很多文字工作的处女座能够哦接受的。。。分别输入又过于繁琐了。。。故而最后只能选择放弃metdig的环境,反正画个简单的雨量图,用metdig着实有点大材小用。
       进入正题,说解决办法。在知乎查到matplotlib3.6版本以上可以使用中英文字体同时设置的功能,因此决定升级,考虑到高版本cartopy可能会不适用于python3.8,最后选择了安装python3.9的虚拟环境。此处各包的安装需留意处处有坑,因此谨慎的百度后才进行安装。安装语句如下:
进入Anaconda Powershell Prompt界面
依次输入conda create --name readgrib2_env python=3.9 --channel conda-forge  ##首先设置虚拟环境
conda activate readgrib2_env  ##激活虚拟环境
conda install -c conda-forge cartopy   ##安装高版本cartopy0.23.0(此处安装过程中欣喜地看到matplotlib3.9版本被装上了嘿嘿)
conda install -c conda-forge pygrib    ##安装读取grib文件的package

截止到目前,环境配置完毕,package版本为python3.9+cartopy0.23+matplotlib3.9此处说明,亲测matplotlib3.9版本可用该语句,传说3.6以上即可,然后有什么用呢,cartopy0.19和3.6以上都不兼容。。

plt.rcParams['font.family'] = ['Times New Roman', 'Microsoft YaHei']   # 设置字体族,英文为Times New Roman,中文为Microsoft YaHei。


该语句能够实现全局字体,中文为微软雅黑、英文为Times New Roman,剩下的单独字体也可以在plt.text中设置并修改。完美~
这回出图处女座感觉舒服多了,咻~~~

不知道大佬们有没有matplotlib低版本,实现一句话中分别设置中英文字体的功能,望赐教!

对于matplotlib的字体查询,也发现了一个好办法,其实所有Windows里有的中文字体,matplotlib都可以直接调用,具体方法参照网上资源copy了一段代码。
from matplotlib import font_manager

for font in font_manager.fontManager.ttflist:

    # 查看字体名以及对应的字体文件名
   print(font.name, '-', font.fname)


输入之后可显示出系统内所有可调用的字体(如下图所示),输入任意字体名即可设置显示在图片中
微信截图_20240731112836.png
纯经验分享+备忘,望能帮助曾有相同困惑的童鞋,欢迎交流。






密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表