解决pandas作图无法显示中文的问题

方予
方予
发布时间:2026-10-13 | 4人浏览过
原创

在使用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作图中文显示问题的解决方案,供参考。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表