关于 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 方法传参的时候实际上需要传递一个元组,在单图例的时候如果不在后面加上一个逗号,解释器就认为不是元组,所以就会出问题。