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 #============================================================