Pandas 无法显示中文问题 解决方案
Pandas在绘图时,会显示中文为方块,主要原因有二:
- matplotlib 字体问题
- seaborn 字体问题
只需要在文件开始动态设置字体配置就可以了,但是要注意,字体设置可能需要尝试多次,比如我一开始设置的win10中的’SamKi’,但是运行结果仍然是中文显示方块,后来我换成了’KaiTi’才正常显示的中文,具体原因可能只是某种字体获取失败而已.(本部分最后有win自带中文字体表)
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['font.serif'] = ['KaiTi']
# mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
import seaborn as sns
sns.set_style("darkgrid",{"font.sans-serif":['KaiTi', 'Arial']})
运行效果展示
win自带中文字体
matplotlib 解决方案一 动态修改配置
代码和第一部分的前半部分一致
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['font.serif'] = ['KaiTi']
# mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串
matplotlib 解决方案二 设置自定义字体
这种方式较为复杂,博主不建议这种方式:
import numpy as np
import pylab as pl
import matplotlib.font_manager as fm
myfont = fm.FontProperties(fname=r'D:Fontssimkai.ttf') # 设置字体
t = np.arange(0.0,2.0 * np.pi,0.01) # 自变量取值范围
s = np.sin(t) # 计算正弦函数值
z = np.cos(t) # 计算余弦函数值
pl.plot(t,s,label='正弦')
pl.plot(t,z,label='余弦')
pl.xlabel('x-变量',fontproperties=myfont,fontsize=24) #设置标签
pl.ylabel('y-正弦余弦函数值',fontproperties=myfont,fontsize=24)
pl.title('sin-cos函数图像',fontproperties=myfont,fontsize=32) #图像标题
pl.legend(prop=myfont)
pl.show()
运行结果展示
win自带字体库路径
- C:WindowsFonts 内含大量字体
- 注意在该文件夹下,字体文件的名字和其他文件夹下显示的不一致,请使用右键属性-常规中文件名,或者使用拷贝到其他文件夹后显示的字体文件名字
参考
- Matplotlib输出中文显示问题,内含mac操作系统字体库https://my.oschina.net/u/1180306/blog/279818
- github的帖子,pandas无法显示中文的问题https://github.com/mwaskom/seaborn/issues/1009