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 · 37 天前 · 2492 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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()
    
    21 条回复    2024-12-24 14:07:58 +08:00
    Mianmiss
        1
    Mianmiss  
       37 天前   ❤️ 1
    挺好,第一次用 matplotlib 为了显示中文折腾了很久
    freefcw
        2
    freefcw  
       37 天前   ❤️ 1
    给楼主点赞,确实很方便
    fbichijing
        3
    fbichijing  
       37 天前
    不是两行代码的问题吗......
    huangyezhufeng
        4
    huangyezhufeng  
    OP
       36 天前
    @fbichijing #3 手动搞,要自己下载字体再指定路径的,够麻烦的了..
    syh2
        5
    syh2  
       36 天前   ❤️ 1
    前段时间在 Linux 服务器用 Jupyter Lab 确实折腾了很久,这个是我目前看到最快捷的解决方法了,感谢 OP !
    siriussilen
        6
    siriussilen  
       36 天前   ❤️ 1
    谢谢,工作上很有帮助
    dant
        7
    dant  
       36 天前   ❤️ 1
    自带中易黑体可能会产生版权问题,可以考虑换成思源黑体或者(如果在意分发大小的话) Droid Sans Fallback
    fbichijing
        8
    fbichijing  
       36 天前
    @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
       36 天前
    @dant #7 感谢建议。这个版权问题有相关的资料吗?我之前大概查了了下 Simhei 的一些版权问题,没太找到明确的解释。
    huangyezhufeng
        10
    huangyezhufeng  
    OP
       36 天前
    @fbichijing #8 代码没问题的。这个前提是操作系统里面已经装了对应的字体。一些 Linux 版本其实没有预装中文字体的。比如上面老哥提到的一些服务器上之类的。
    huangyezhufeng
        11
    huangyezhufeng  
    OP
       36 天前
    @dant https://github.com/shenxiangzhuang/zhplot/issues/7
    感谢提醒,单独建了个 issue 。然后具体查了下,这个确实可能存在版权问题。然后思源黑体确实是比较好的备选项,不过文件确实有点太大了,然后 Droid Sans Fallback 的版权问题好像也有一丢丢不清晰。查了下目前打算换到 noto-cjk ,这个字体大小可以接受,然后版权看起来也没啥问题。有其他建议可以移步 GitHub 讨论哈~
    JeremyFeng
        12
    JeremyFeng  
       35 天前   ❤️ 1
    简单易用,感谢开发
    Syiize
        13
    Syiize  
       35 天前
    可以添加相应的函数,让用户能够设置自己想要使用的字体吗?
    zsk425
        14
    zsk425  
       35 天前
    能支持 python 3.8 么
    huangyezhufeng
        15
    huangyezhufeng  
    OP
       35 天前
    @zsk425 这里有必须使用 3.8 的场景吗?因为现在 3.8 已经 EOL 了( https://devguide.python.org/versions/), 所以这里最小支持的版本是 3.9
    huangyezhufeng
        16
    huangyezhufeng  
    OP
       35 天前
    @Syiize 是说指定字体文件路径这样吗?(如果是系统已有字体,在 matplotlib 直接指定就行) 可以开个 issue 说明一下, 我后面看看加上合不合适。
    zsk425
        17
    zsk425  
       35 天前
    原来 3.8 已经 EOL 了,那确实没必要支持
    syh2
        18
    syh2  
       14 天前
    OP 你这个包是不是已经不能用了,今天试了一下显示还是乱码,之前倒是可以
    huangyezhufeng
        19
    huangyezhufeng  
    OP
       14 天前
    @syh2 #18 可以提个 issue 贴下具体的环境和复现的代码。我这里测试了新版本也没有复现问题。
    syh2
        20
    syh2  
       13 天前
    @huangyezhufeng #19 可以了,我重新卸载了旧的 matplotlib ,先装 zhplot 然后附带装上 matlpotlib 就 OK 了,感谢~~
    huangyezhufeng
        21
    huangyezhufeng  
    OP
       13 天前
    @syh2 #20 好的。理论上这个安装的顺序是不影响使用的。后续有什么问题也可以反馈,我尽量及时跟进修复。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1038 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 20:20 · PVG 04:20 · LAX 12:20 · JFK 15:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.