Seaborn,Matplotlib,情节中文错误

时间:2017-01-12 04:24:27

标签: python matplotlib seaborn

这是我的示例数据cities_counter[:10]

[('上海', 285), ('杭州', 225), ('北京', 163), ('广州', 136), ('南京', 130), ('武汉', 124), ('深圳', 88), ('温州', 67), ('苏州', 66), ('宁波', 45)]

我想用Seaborn和Matplotlib制作一个条形图,所以这是我的代码

>>> sns.set(style="whitegrid")
>>> sns.set_color_codes("pastel")
>>> sns.barplot(x=[k for k, _ in cities_counter[:10]], y=[v for _, v in cities_counter[:10]])

,结果是

enter image description here

ENV:

  • Windows 10
  • Python 3.5

我如何绘制汉字?

2 个答案:

答案 0 :(得分:1)

尝试设置matplotlib字体然后设置seaborn。并确保您的系统中有该字体。

它对我有用。

import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
import seaborn as sns
sns.set_style("darkgrid",{"font.sans-serif":['simhei', 'Arial']})

详细了解seaborn.setseaborn.set_style

另外,您可以查看此issue

希望这有帮助。

答案 1 :(得分:1)

诀窍是您必须在执行所有set的seaborn之后设置seafont,否则设置字体操作将无效:

import seaborn as sns

sns.set(style="whitegrid")
sns.set_color_codes("pastel")
sns.set(font="SimSun")

data = [('上海', 285), ('杭州', 225), ('北京', 163), ('广州', 136)]
sns.barplot(x=[k for k, _ in data], y=[v for _, v in data])

Screenshot diagram

上面的代码对matplotlib==3.1.1seaborn==0.9.0有用,希望对您有用。