解决pandas作图无法显示中文的问题
在使用pandas进行数据可视化时,常遇到图表中文显示为方框的问题。本文分析原因是matplotlib默认不支持Unicode,通过修改matplotlibrc配置文件,在font.serif和font.sans-serif中添加SimHei字体,即可解决中文乱码,实现正常显示。
近期在使用pandas进行数据可视化分析以挖掘信息时,遇到了图表中中文无法正确显示的问题。
以下代码用于统计fujian1.csv文件中City列各城市的出现频次。但在生成直方图时,x轴标签无法显示中文。
import pandas as pd
# Reading data locally
df = pd.read_csv('fujian1.csv', encoding='gbk')
counts = df['City'].value_counts()
counts[counts > 1000].plot(kind = 'bar')
经查阅资料,问题根源在于matplotlib包默认仅支持ASCII码,不支持Unicode编码。
解决方法是修改matplotlib安装目录下的matplotlibrc配置文件。需取消font.family部分的注释(约139行),并在font.serif和font.sans-serif中添加中文字体,例如SimHei。
font.family : sans-serif #font.style : normal #font.variant : normal #font.weight : medium #font.stretch : normal # note that font.size controls default text sizes. To configure # special text sizes tick labels, axes, labels, title, etc, see the rc # settings for axes and ticks. Special text sizes can be defined # relative to font.size, using the following values: xx-small, x-small, # small, medium, large, x-large, xx-large, larger, or smaller #font.size : 12.0 font.serif : SimHei, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif #font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, cursive #font.fantasy : Comic Sans MS, Chicago, Charcoal, Impact, Western, fantasy #font.monospace : Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace
配置修改后,图表中的中文得以正常显示。

以上为pandas作图中文显示问题的解决方案,供参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









