matplotlib中文字体乱码 尤其是Axes3D
乱码的情况通常是因为你没有安装响应的字体,所以只需要下载对应字体,并正确配置即可。
首先,下载字体:https://github.com/StellarCN/scp_zh/blob/master/fonts/SimHei.ttf
这里给出来的是黑体。
其次,需要让matplotlib找到字体,这里有两种方案,第一种,直接把字体放到matplotlib库的目录里,第二种放到你项目的目录里,具体操作如下。
1、放到matplotlib目录里 可以解决Axes3D乱码问题
首先用下面的代码找到你matplotlib字体的目录:
import matplotlib
print(matplotlib.matplotlib_fname())
上面的输出应该如下:
xxxx/site-packages/matplotlib/mpl-data/matplotlibrc
对应字体目录应该是:
xxxx/site-packages/matplotlib/mpl-data/fonts/ttf/
所以只需要把上面下载的SimHei.ttf
放到该目录下即可。
然后在代码里面用如下的代码就可以找到了:
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei'
如果仍然出错,可以尝试清空下matplotlib的缓存,在目录~/.matplotlib 下面。windows在C:/用户/用户名xx/.matplotlib下面。
这种方案因为是全局的,所以可以解决Axes3D的乱码问题。
2、放到任意位置
下面的方案是局部的,你可以把字体放到任意位置,然后在代码里配置字体位置,并且加载字体即可。代码如下:
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname="SimHei.ttc", size=12)
plt.title("中文",fontproperties=font)