- 积分
- 8113
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-9-19
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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)
输入之后可显示出系统内所有可调用的字体(如下图所示),输入任意字体名即可设置显示在图片中
纯经验分享+备忘,望能帮助曾有相同困惑的童鞋,欢迎交流。
|
|