zoukankan      html  css  js  c++  java
  • matplotlib汉字显示问题

    import random
    import os,time,sys
    import numpy,pandas
    import matplotlib.pyplot as plt
    from matplotlib.font_manager import FontProperties
    
    #data = pandas.read_csv("ceshi.csv", encoding="utf-8")
    data = pandas.read_csv("ceshi.csv", encoding="GBK")
    print (data)
    data1 = pandas.read_excel("test.xlsx")
    print (data1)
    
    #中间要转换一下才能重新写入csv
    data2 = pandas.DataFrame(data1)
    data2.to_csv('ceshi1.csv',encoding="GBK", index=None)
    
    print (data.describe())
    print (data1.describe())
    print (data2.describe())
    
    #画图 data3
    = pandas.read_csv("ceshi3.csv", encoding="GBK") data3.plot(style = "--",linewidth = 10) plt.xlabel("x轴",fontproperties="SimSun") plt.ylabel("y轴",fontproperties="SimSun") font = FontProperties(fname=r'c:windowsfontsSTKaiti.ttf', size=12) plt.title('显示sin,cos曲线', fontproperties=font) plt.show()



    数据源如下:根据每一列的数据画图

     

    Python实现matplotlib显示中文方法详解 中给出了四种显示中文的方法。

    1.使用fontproperties

    在xlabel, ylabel, title后面使用fontproperties来指明所使用的字体的名称。

    import matplotlib.pyplot as plt
    # ...
    plt.xlabel("x轴")
    plt.ylabel("y轴", fontproperties="SimSun") # 步骤一  (宋体)
    plt.title("标题", fontproperties="SimHei") #     (黑体)
    plt.show()

    下面表格给出了中文字体对应的英文名称。通过测试,并不是每一个英文字体都是可以使用的。

    表格1:中文字体与对应的英文名称

    中文字体英文名称英文可用?.ttf可用?
    宋体 SimSun 不可以 不可以
    黑体 SimHei 可以 可以
    微软雅黑 Microsoft YaHei 可以 不可以
    微软正黑体 Microsoft JhengHei 可以 不可以
    新宋体 NSimSun 不可以 不可以
    新细明体 PMingLiU 不可以 不可以
    细明体 MingLiU 不可以 不可以
    标楷体 DFKai-SB 不可以 不可以
    仿宋 FangSong 可以 不可以
    楷体 KaiTi 可以 不可以
    隶书 LiSu 可以 不可以
    幼圆 YouYuan 可以 不可以
    华文细黑 STXihei 可以 可以
    华文楷体 STKaiti 可以 可以
    华文宋体 STSong 可以 可以
    华文中宋 STZhongsong 可以 不可以
    华文仿宋 STFangsong 可以 不可以
    方正舒体 FZShuTi 可以 不可以
    方正姚体 FZYaoti 可以 不可以
    华文彩云 STCaiyun 可以 可以
    华文琥珀 STHupo 可以 可以
    华文隶书 STLiti 可以 可以
    华文行楷 STXingkai 可以 不可以
    华文新魏 STXinwei 可以 不可以

    2.使用font

    使用font设置,可以设置字体的大小。可以使用的ttf文件及其名称参见表格1的信息。

    font = FontProperties(fname=r'c:windowsfontsSTKaiti.ttf', size=12)


    plt.xlabel("时间(秒)", fontproperties=font)
    plt.ylabel("函数值(X)", fontproperties=font)
    plt.title('显示sin,cos曲线', fontproperties=font)

    #记得要导入库文件

    from matplotlib.font_manager import FontProperties

    3.使用rcParams参数

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.rcParams['axes.unicode_minus'] = False  # Solve the minus sign problems
    
    plt.plot(t, sindata, label='sin(x)正弦')
    plt.plot(t, cosdata, label='cos(x^2)余弦')
    
    plt.xlabel("时间(秒)")
    plt.ylabel("函数值(X)")
    plt.title('显示sin,cos曲线')

    4.使用rc参数

    使用rc参数可以设定更多的font的参数。比如下面测示例,可以设定字体(font)、加黑(weight), 尺寸(size)。

    ont = {'family':'SimHei',
            'weight':'bold',
            'size':'12'}
    plt.rc('font', **font)
    plt.rc('axes', unicode_minus=False)
    
    plt.plot(t, sindata, label='sin(x)正弦')
    plt.plot(t, cosdata, label='cos(x^2)余弦')
    
    plt.xlabel("时间(秒)")
    plt.ylabel("函数值(X)")
    plt.title('显示sin,cos曲线')
    • 方式二用时才设置,且不会污染全局字体设置,更灵活
    • 方式三、方式四不需要对字体路径硬编码,而且一次设置,多次使用,更方便。
    #!/usr/local/bin/python
    # -*- coding: gbk -*-
    from headm import *
    from matplotlib.font_manager import FontProperties
    t = linspace(0, 10, 400)
    sindata = sin(t)
    cosdata = cos(t**2)
    #font = FontProperties(fname=r'c:windowsfontsSTSong.ttf', size=16) #plt.rcParams['font.sans-serif'] = ['SimHei'] #plt.rcParams['axes.unicode_minus'] = False # Solve the minus sign problems


    font = {'family':'SimHei', 'weight':'bold', 'size':'12'}
    plt.rc(
    'font', **font) plt.rc('axes', unicode_minus=False) plt.plot(t, sindata, label='sin(x)正弦') plt.plot(t, cosdata, label='cos(x^2)余弦') plt.xlabel("时间(秒)") plt.ylabel("函数值(X)") plt.title('显示sin,cos曲线')

    #plt.xlabel("时间(秒)", fontproperties=font) #plt.ylabel("函数值(X)", fontproperties=font) #plt.title('显示sin,cos曲线', fontproperties=font)

    plt.grid(True) plt.tight_layout() plt.legend(loc='upper right') plt.show() #------------------------------------------------------------ # END OF FILE : TEST1.PY #============================================================
  • 相关阅读:
    学习:HelloWorld项目目录
    学习:java设计模式—Adapter模式
    学习:java设计模式—Decorator模式
    MyEclipse8.5/8.6不能安装ADT
    学习:Android框架
    笔记:代码整洁之道
    JVM常用启动参数
    春雷第一声初入博客
    在Winform中更改控件导致designer中代码自动移除解决方法
    C#生成灰度图片:拖动图片到picturebox显示,拖动picturebox图片到资源管理器 (Drag & drop )
  • 原文地址:https://www.cnblogs.com/chengxuyonghu/p/13773606.html
Copyright © 2011-2022 走看看