有两种方法,一个是seaborn设置中文字体绝对路径,另一个是修改matplotlib的中文字体配置文件。本人使用的是Mac,下面以Mac系统添加思源黑体为例,Windows下设置方法大同小异。
1. 设置seaborn中文字体绝对路径
设置绝对路径方式可以随意使用想用的中文字体,亲测otf,ttf字体均有效。
import seaborn as sns
from matplotlib.font_manager import FontProperties
# 读取字体路径,设置字体为思源黑体
myfont=FontProperties(fname=r'/Users/Library/Fonts/SourceHanSansSC-Normal.otf')
sns.set(font=myfont.get_family())
sns.set_style("whitegrid",{"font.sans-serif":['Source Han Sans CN']})
# 房价数据存储到字典中,数据纯属虚构:)
city_price = {'深圳': 55000,'上海': 48000, '北京': 45000, '厦门': 35000, '广州': 33000}
# 作条形图
sns.barplot(x=[k for k, _ in city_price.items()], y=[v for _, v in city_price.items()])
sns.despine(left=True)
plt.title('房价排行', color='gray', fontsize=14, weight='bold')思源黑体Source Han Sans CN字体
等线DengXian字体
2. 修改matplotlib配置文件实现中文显示
a. 首先查找matplotlib的配置文件位置:
import matplotlib
matplotlib.matplotlib_fname()
得到的配置文件路径是:
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
打开该文件,定位到下图位置,去掉这两行前面的#号,并在font.serif 中添加Source Han Sans CN。 这里可以自由添加想要的字体,黑体对应Sim Hei,微软雅黑对应Microsoft YaHei。
b. 接着,需要删除.matplotlib缓存文件夹,位置在/Users/使用者名称/.matplotlib,里面存有matplotlib的缓存,会影响加载新的字体。删除这个缓存文件夹
c. 之后再把字体文件放入matplotlib的字体文件夹中。字体文件夹位置在/Users/使用者名称/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf。
d. 重新开一个jupyter notebook测试中文字体
import seaborn as sns
# 房价数据存储到字典中,数据纯属虚构
city_price = {'深圳': 55000,'上海': 48000, '北京': 45000, '厦门': 35000, '广州': 33000}
# 作条形图
sns.barplot(x=[k for k, _ in city_price.items()], y=[v for _, v in city_price.items()])
sns.despine(left=True)
plt.title('房价排行', color='gray', fontsize=14, weight='bold')中文能够正确显示。PS:图片文字本身是清晰的,不知为何发布后就又黑又糊了...
完成!
参考内容: