V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
huangyezhufeng
V2EX  ›  Python

matplotlib 做图显示中文: import zhplot

  •  1
     
  •   huangyezhufeng ·
    shenxiangzhuang · 23 天前 · 1975 次点击

    TLDR

    pip install zhplot安装,之后import zhplot即可。

    GitHub 地址

    https://github.com/shenxiangzhuang/zhplot

    为什么

    • 只想做个简单的图,能够正常显示中文
    • 不关心具体字体,不想为了做个图去捣腾系统字体

    示例

    import zhplot
    import matplotlib.pyplot as plt
    
    
    plt.plot([1, 2, 3, 4])
    plt.title('这是一个标题')
    plt.xlabel('横坐标')
    plt.ylabel('纵坐标')
    plt.show()
    
    19 条回复    2024-12-23 21:04:49 +08:00
    Mianmiss
        1
    Mianmiss  
       23 天前   ❤️ 1
    挺好,第一次用 matplotlib 为了显示中文折腾了很久
    freefcw
        2
    freefcw  
       23 天前   ❤️ 1
    给楼主点赞,确实很方便
    fbichijing
        3
    fbichijing  
       23 天前
    不是两行代码的问题吗......
    huangyezhufeng
        4
    huangyezhufeng  
    OP
       22 天前
    @fbichijing #3 手动搞,要自己下载字体再指定路径的,够麻烦的了..
    syh2
        5
    syh2  
       22 天前   ❤️ 1
    前段时间在 Linux 服务器用 Jupyter Lab 确实折腾了很久,这个是我目前看到最快捷的解决方法了,感谢 OP !
    siriussilen
        6
    siriussilen  
       22 天前   ❤️ 1
    谢谢,工作上很有帮助
    dant
        7
    dant  
       22 天前   ❤️ 1
    自带中易黑体可能会产生版权问题,可以考虑换成思源黑体或者(如果在意分发大小的话) Droid Sans Fallback
    fbichijing
        8
    fbichijing  
       22 天前
    @huangyezhufeng

    是我的理解有问题吗?

    ```python
    import matplotlib.pyplot as plt

    # 多两行代码
    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

    plt.plot([1, 2, 3, 4])
    plt.title('这是一个标题')
    plt.xlabel('横坐标')
    plt.ylabel('纵坐标')
    plt.show()
    ```
    huangyezhufeng
        9
    huangyezhufeng  
    OP
       22 天前
    @dant #7 感谢建议。这个版权问题有相关的资料吗?我之前大概查了了下 Simhei 的一些版权问题,没太找到明确的解释。
    huangyezhufeng
        10
    huangyezhufeng  
    OP
       22 天前
    @fbichijing #8 代码没问题的。这个前提是操作系统里面已经装了对应的字体。一些 Linux 版本其实没有预装中文字体的。比如上面老哥提到的一些服务器上之类的。
    huangyezhufeng
        11
    huangyezhufeng  
    OP
       22 天前
    @dant https://github.com/shenxiangzhuang/zhplot/issues/7
    感谢提醒,单独建了个 issue 。然后具体查了下,这个确实可能存在版权问题。然后思源黑体确实是比较好的备选项,不过文件确实有点太大了,然后 Droid Sans Fallback 的版权问题好像也有一丢丢不清晰。查了下目前打算换到 noto-cjk ,这个字体大小可以接受,然后版权看起来也没啥问题。有其他建议可以移步 GitHub 讨论哈~
    JeremyFeng
        12
    JeremyFeng  
       21 天前   ❤️ 1
    简单易用,感谢开发
    Syiize
        13
    Syiize  
       21 天前
    可以添加相应的函数,让用户能够设置自己想要使用的字体吗?
    zsk425
        14
    zsk425  
       21 天前
    能支持 python 3.8 么
    huangyezhufeng
        15
    huangyezhufeng  
    OP
       21 天前
    @zsk425 这里有必须使用 3.8 的场景吗?因为现在 3.8 已经 EOL 了( https://devguide.python.org/versions/), 所以这里最小支持的版本是 3.9
    huangyezhufeng
        16
    huangyezhufeng  
    OP
       21 天前
    @Syiize 是说指定字体文件路径这样吗?(如果是系统已有字体,在 matplotlib 直接指定就行) 可以开个 issue 说明一下, 我后面看看加上合不合适。
    zsk425
        17
    zsk425  
       21 天前
    原来 3.8 已经 EOL 了,那确实没必要支持
    syh2
        18
    syh2  
       7 小时 1 分钟前
    OP 你这个包是不是已经不能用了,今天试了一下显示还是乱码,之前倒是可以
    huangyezhufeng
        19
    huangyezhufeng  
    OP
       5 小时 31 分钟前
    @syh2 #18 可以提个 issue 贴下具体的环境和复现的代码。我这里测试了新版本也没有复现问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1152 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 18:35 · PVG 02:35 · LAX 10:35 · JFK 13:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.