关于 matplotlib 画图几个问题的解决

2019-08-17  本文已影响0人  Vector_Wan

有几个问题困扰我好久了今天终于解决了,一定要记录一下,
第一个就是:

画图的时候无法显示中文

好久之前就发现画图无法显示中文,只显示一个方块,之前一直不知道怎么弄,上网一搜全是麻烦的配置文件,还要下载字体,今天忽然发现一个简单的方法,很不错:只要添加:

# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

这两句代码就可以,
我们试一下:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-4, 4, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.title('sin()曲线图')
plt.legend(('这是一个图例',), loc='best')
plt.show()

添加上这两个代码:

import matplotlib.pyplot as plt
import numpy as np


# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

x = np.arange(-4, 4, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.title('sin()曲线图')
plt.legend(('这是一个图例',), loc='best')
plt.show()

可以显示中文啦

单图例只显示第一个字符

之前画图的时候老是出现这种情况,只在单图例上出现,当时也没发现哪里出错了,没办法只好把图例去掉了,

import matplotlib.pyplot as plt
import numpy as np


# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

x = np.arange(-4, 4, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.title('sin()曲线图')
plt.legend(('这是一个图例'), loc='best')
plt.show()

后来发现只要将plt.legend(('这是一个图例'), loc='best') 修改为 plt.legend(('这是一个图例',), loc='best') 这是因为: (不相信的同学可以试一下)

>>> type((1))
int
>>> type((1,))
tuple

我们在给 legend 方法传参的时候实际上需要传递一个元组,在单图例的时候如果不在后面加上一个逗号,解释器就认为不是元组,所以就会出问题。

上一篇下一篇

猜你喜欢

热点阅读