使用python的matplotlib.pyplot(plt)绘制图片标题中文出现乱码

1年前 ⋅ 783 阅读

之前我们说过使用python进行画图,使用的工具是matplotlib.pyplot也就是我们一般简写的plt。在英文环境下,一般不会出现乱码问题,但是当我们想要使用中文进行描述,比如:标题,文字说明,x轴名称和y轴名称等。这个时候就会出现乱码格式如下图:

pylot_chinese.jpg
解释:图中的方框形式的内容[][]就是我们所说的中文乱码了。

那么接下来我们怎么解决这个问题呢,很简单,操作如下

1.先看看核心代码

# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['STSong']
plt.rcParams['axes.unicode_minus'] = False

2.将核心代码放在出现中文字符的操作前面,以下类似的代码(如果不太明白,结合下一步):

plt.xlabel("x的取值")  # 设置横轴(x)标签
plt.ylabel("y的取值")  # 设置每个图中纵轴(y)的标签
plt.title("散点图")  # 设置标题

4.整体代码如下

import matplotlib.pyplot as plt
# 下面的x与y的是一一对的
# 也就是[1,9],[2,3],[3,4],[4,5],...这些点
x = [1, 2, 3, 4, 5, 6, 6, 8, 9]#随机写的x取值
y = [9, 3, 4, 5, 6, 7, 8, 2, 1]#随机写的y取值
plt.scatter(x,y)#画出散点
# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['STSong']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel("x的取值")  # 设置横轴(x)标签
plt.ylabel("y的取值")  # 设置每个图中纵轴(y)的标签
plt.title("散点图")  # 设置标题
plt.grid(linestyle='-.', color='orange')  # 画出每个图中的网格
# 将点的值描述出来
for i in range(len(x)):
    plt.text(x[i],y[i],"({},{})".format(x[i],y[i]))
plt.tight_layout()  # 自动调整参数,使之填充整个图像区域
plt.show()  # 展示图片

5.解决乱码所画的图如下

plt_chinese.png