python数据分析之图表入门1《数学函数图像》
第一个图表:一元二次函数$y=2x^2+3x+4$
1、导入库
import matplotlib.pyplot as plt #导入matplotlib.pyplot绘图库
2、准备数据(list或numpy或linspace),二者选一种即可。
①、列表(list)
x,y=[],[] #初始化两个列表,分别表示定义域和值域
for i in range(-10,11):
x.append(i) #在定义域中增加数值
y.append(2*i*i+3*i+4) #在值域中对应增加数值
②、Numpy
import numpy as np #导入numpy库
x=np.arange(-10,11) #numpy库arange(x,y,z)函数功能是在[x,y)区间从x开始步长为z取数,z默认1。
y=2*x*x+3*x+4
3、绘制图表
3.1、绘制基础图表
plt.plot(x,y) #用x和y做数据,描出所有的(x,y)并连接成折线
plt.show() #显示图表

3.2、增加标签
plt.xlabel('x轴标签')
plt.ylabel('y轴标签')
plt.title('y=2*x*x+3*x+4')
#
plt.plot(x,y) #用x和y做数据,描出所有的(x,y)并连接成折线
plt.show() #显示图表

Q:出现错误1、如图红色箭头处的乱码。2、程序运行错误提示“..............font.set_text(s, 0.0, flags=flags)..................”。
A:需要中文支持。在使用中文之前,增加中文字体设置。修改代码如下:
plt.rcParams['font.family'] = ['SimHei'] # 解决中文显示异常的问题
plt.xlabel('x轴标签')
plt.ylabel('y轴标签')
plt.title('y=2*x*x+3*x+4')
plt.plot(x,y) #用x和y做数据,描出所有的(x,y)并连接成折线
plt.show() #显示图表

Q:出现负号乱码。如图红色箭头处。
A:增加编码支持。在show()显示图表之前,增加编码设置。修改代码如下:
plt.rcParams['font.family'] = ['SimHei'] # 解决中文显示异常的问题
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示异常的问题
#
plt.xlabel('x轴标签')
plt.ylabel('y轴标签')
plt.title('y=2*x*x+3*x+4')
#
plt.plot(x,y) #用x和y做数据,描出所有的(x,y)并连接成折线
plt.show() #显示图表
4、叠加$y=x^3$图像
4.1、增加同一定义域x对应的另一个值域y。并增加plot()
plt.title('y1=2*x*x+3*x+4\ny=x*x*x') #修改标题
#
g=x**3 #计算第二个函数在定义域x上对应值域
plt.plot(x,g) #用x和g做数据,描出所有的(x,g)并连接成折线
#
plt.plot(x,y) #用x和y做数据,描出所有的(x,y)并连接成折线
plt.show() #显示图表

4.2、增加图例
在所有plot()绘制数据线之后,使用legend()增加图例,设置数据标签。
plt.plot(x,y)
#
plt.legend(labels = ('y1=2*x*x+3*x+4', 'y=x*x*x'), loc = 'lower right') #在右下角增加图例并设置数据标签
plt.show()

4.3、保存图像
在所有数据准备好之后,用show()显示图表,用savefig()保存图表为png图片文件。
plt.legend(labels = ('y1=2*x*x+3*x+4', 'y=x*x*x'), loc = 'lower right')
plt.savefig('tuxiang.png') #保存图表
plt.show()
5、完成基本绘图
5.1、完整代码如下:
import matplotlib.pyplot as plt #导入matplotlib.pyplot绘图库
import numpy as np #导入numpy库
x=np.arange(-10,11) #numpy库arange(x,y,z)函数功能是在[x,y)区间从x开始步长为z取数,z默认1。
y=2*x*x+3*x+4
#
plt.rcParams['font.family'] = ['SimHei'] # 解决中文显示异常的问题
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示异常的问题
#
plt.xlabel('x轴标签')
plt.ylabel('y轴标签')
plt.title('y1=2*x*x+3*x+4\ny=x*x*x')
#
g=x**3 #计算第二个函数在定义域x上对应值域
plt.plot(x,g) #用x和g做数据,描出所有的(x,g)并连接成折线
#
plt.plot(x,y) #用x和y做数据,描出所有的(x,y)并连接成折线
plt.legend(labels = ('y1=2*x*x+3*x+4', 'y=x*x*x'), loc = 'lower right') #在右下角增加图例并设置数据标签
#
plt.savefig('tuxiang.png') #保存图表
plt.show() #显示图表

浙公网安备 33010602011771号