• Windows下的matplotlib画图中文显示设置


    一、在测试matplotlib时遇到X轴中文字符不显示的问题,参考网上

    源代码如下

    from matplotlib import pyplot as plt
    import random
    import matplotlib
    from matplotlib import font_manager
    
    # my_font =  {'family' : 'MicroSoft YaHei',
    #               'weight' : 'bold',
    #               'size'   : 'larger'}
    # matplotlib.rc("font",**my_font)
    # matplotlib.rc("font",)
    my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttf")
    
    plt.figure(figsize=(20,8),dpi=80)
    
    x = range(0,120)
    y = [random.randint(20,35) for i in range(120)]
    
    _xticks_labels = ["10点{}分".format(i) for i in range(60)]
    _xticks_labels += ["11点{}分".format(i) for i in range(60)]
    # plt.xticks(list(x)[::3])
    plt.xticks(list(x)[::3],_xticks_labels[::3],rotation=45,fontproperties=my_font)
    plt.plot(x,y)
    plt.show()

    二、参考网上玩法

    电脑环境:Windows7-64bit,Anaconda3-4.2.0(对应python 3.5.2版本),IDE是Anaconda自带的Spyder 3。

    1、找到Windows系统自带的字体库目录,默认在C:WindowsFonts目录下。

     

    2、选择你自己喜欢的字体,然后“右键”→“属性”,可以看到该字体的名字。

    本教程以微软雅黑字体为例,您也可以选择其他字体,如果自带的字体库满足不了您的需求,您可以网上下载其他字体,将字体解压到C:WindowsFonts目录即可。

     

    3、在IDE工具中,导入matplotlib库,开始定义字体所在路径。

    • 1 先不设置参数,可以看到中文字体显示为方框(此处使用的是SVC三分类模型)。
     
     
    • 2 设置参数之后,可以看到中文字体可以正常显示了。(代码经过测试,可放心使用)

    哪里需要中文设置,保证该函数里有fontproperties = my_font参数即可。比如x轴的标签为:鸢尾花的花萼长度。那么可以使用:

    plt.xlabel('鸢尾花的花萼长度', fontproperties = my_font)
     
     
    # coding:utf-8
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import svm, datasets
    
    # 以下两行是解决常见的其他问题
    plt.rcParams['font.sans-serif'] = ['SimHei']                          # 指定默认字体
    plt.rcParams['axes.unicode_minus'] = False                            # 解决保存图像是负号'-'显示为方块的问题
    
    import matplotlib.font_manager as mf                                  # 导入字体管理器
    my_font= mf.FontProperties(fname='C:\Windows\Fonts\msyh.ttf')      # 加载字体
    
    iris = datasets.load_iris()
    X = iris.data[:, :2]  
    Y = iris.target
    
    def my_kernel(X, Y):
        M = np.array([[2, 0], [0, 1.0]])
        return np.dot(np.dot(X, M), Y.T)
    
    h = 0.02  
    
    clf = svm.SVC(kernel = my_kernel)
    clf.fit(X, Y)
    
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    
    Z = Z.reshape(xx.shape)
    plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Paired)
    
    plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)
    plt.title('测试!!!3-Class classification using SVM with custom kernel',
              fontproperties = my_font)
    plt.axis('tight')
    plt.show()
     
     
  • 相关阅读:
    FFMPEG音视频基础问题和被面试问到的东西
    OpenGL学习
    FFMPEG起航之旅
    SurfaceView、TextureView对比和学习
    对文件拷贝、删除操作、对时间的计算以及转化
    音视频开发
    企业级Android应用架构设计与开发
    屏幕分辨率的适配&&开发文档的介绍
    设计模式的学习
    自定义Dialog的模版
  • 原文地址:https://www.cnblogs.com/di2wu/p/10203258.html
Copyright © 2020-2023  润新知