如果legend中包含中文,如果不做任何处理,中文将无法显示
import numpy as np
import matplotlib.pyplot as plt
y = np.array([2190.21, 3225.59, 4398.6, 4584.51, 4714.29, 4833.77, 3830.86, 3680, 4550, 5650])
x = np.arange(2009,2019)
fig, ax1 = plt.subplots()
ax1.plot(x, y1, color='c', label='进口额')
plt.legend()
plt.show()
给legend设置中文字体
方法1:
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
# 给legend设置字体
plt.legend(prop=font)
完整代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
y = np.array([2190.21, 3225.59, 4398.6, 4584.51, 4714.29, 4833.77, 3830.86, 3680, 4550, 5650])
x = np.arange(2009,2019)
fig, ax1 = plt.subplots()
ax1.plot(x, y1, color='c', label='进口额')
plt.legend(prop=font)
plt.show()
效果
方法2:
from pylab import mpl
font = mpl.font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
plt.legend(prop=font)
给x和y轴标签设置字体
在上述基础上只需添加如下代码
plt.xlabel('年份',fontproperties = font)
plt.ylabel('亿元',fontproperties = font)
效果
image.png
给坐标轴上的字设置字体
x_val = ['2009年','2010年','2011年','2012年','2013年','2014年','2015年','2016年','2017年','2018年']
plt.xticks(x,x_val,fontproperties = font)
效果:
完整代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from pylab import mpl
font = mpl.font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
font1 = FontProperties(fname=r'c:\Windows\Fonts\simsun.ttc')
y = np.array([2190.21, 3225.59, 4398.6, 4584.51, 4714.29, 4833.77, 3830.86, 3680, 4550, 5650])
x = np.arange(2009,2019)
fig, ax1 = plt.subplots()
ax1.plot(x, y1, color='c', label='进口额')
plt.legend(prop=font2)
plt.xlabel('年份',fontproperties = font)
plt.ylabel('亿元',fontproperties = font)
x_val = ['2009年','2010年','2011年','2012年','2013年','2014年','2015年','2016年','2017年','2018年']
plt.xticks(x,x_val,fontproperties = font) ## 可以设置坐标字
plt.show()
更新
有个一劳永逸的方法
只要在开始加上以下几句话就可以了
import matplotlib as mpl
# 解决中文乱码问题
#sans-serif就是无衬线字体,是一种通用字体族。
#常见的无衬线字体有 Trebuchet MS, Tahoma, Verdana, Arial, Helvetica, 中文的幼圆、隶书等等。
mpl.rcParams['font.sans-serif']=['SimHei'] #指定默认字体 SimHei为黑体
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
网友评论