2.3python如何绘制二次函数图像

2.3.1工具

  • python
  • matplotlib
  • pyplot
    pyplot四Matplotlib中的模块,封装了很多处理graph的方法。绘制表格,修改表格属性都是用它实现的。

2.3.2例子

二次函数绘制方法

  1. 把二次函数图像变成点存储于list中
    画直线的时候我们画了三个点,我们还可以画更多的点。点越多图像就越是一条直线,运用的思想是微积分的思想。如何生成很多点呢?python本身自带range()函数, 我们可以使用它来自动生成点的横坐标,但是range()只能自动生成间隔为自然数的数据。我们就需要自己写一个函数自动生成任意间隔的数据。
def frange(start,final,increment):
    numbers=[]
    while start

frange()函数是我们自己写的,用来生成任意间隔的数据。

  1. 在图表中显示出这些点。
 from pylab import plot,show

这个方法是引用pylab模块,导入pylab模块的方法,然后就可以直接使用这些方法。

 import matplotlib.pyplot as plt

这个方法是导入模块,然后实例化一个pyplot类对象。然后通过对象直接使用pyplot模块的方法,和上面的方法效果一样。

plt.style.use('ggplot')#使用‘ggplot风格美化图表’
def create_graph(a,b,c,d,e):#定义图表函数
    x = frange(d,e,0.02)#生成x轴坐标
    y = []#定义y轴坐标数据类型
    for i in x:
        y.append(a*i**2+b*i+c)#y轴坐标数据计算
    plt.plot(x,y)#把x、y轴坐标带入plot()画图。
    plt.xlabel(u'x轴')#显示x轴名词,u是更改字符编码。
    plt.ylabel(u'y')
    plt.title(u'二次函数图像')
    plt.show()#展示出来。
create_graph(1,2,1,-4,3)

如果直接在Matplotlib中使用中文会出现

报错:ValueError: matplotlib display text must have all code points < 128 or use Unicode strings

中文编码问题的解决方法只需在中文字符串前面加个u即可,表示使用Unicode编码。


2.3.3有没有现成的生成x轴坐标的python库

当然有现成的生成x轴坐标的库,numpy就是其中一个。NumPy是Python中科学计算的基础软件包。它是一个提供多了维数组对象,多种派生对象(如:掩码数组、矩阵)以及用于快速操作数组的函数及API,它包括数学、逻辑、数组形状变换、排序、选择、I/O 、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等等。
使用方法

import numpy as np
x = np.arange(-5, 5, 0.01)#可以自动生成x轴坐标,最小间隔为0.01

上面程序可以修改为

#-*- coding:utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('ggplot')#使用‘ggplot风格美化图表’
def create_graph(a,b,c,d,e):
    x = np.arange(d,e,0.01)
    y = a*x**2+b*x+c
    plt.plot(x,y)
    plt.xlabel(u"x轴")
    plt.title(u'二次函数')
    plt.show()
    
create_graph(1,2,3,-4,4)

这次函数写的简单多了,而且y值也不需要用for循环来生成,直接使用即可。

2.3.4 绘制数学函数图像

numpy功能很强大,可以涵盖很多数学函数,直接拿来使用即可。

import matplotlib.pyplot as plt
import numpy as np 
pai =np.pi
x = np.arange(0,2*pai,0.01)
y = np.sin(x)
plt.plot(x,y)
plt.show()

例如正弦函数图像


感想

以前自己总是纳闷,计算上的函数图像到底是如何生成的,而且纳闷细腻,经过深入了解函数图像的生成过程,才懂得函数图像是一个点一个点绘制出来的,只要x轴数据足够多,加上计算机的强大计算能力,很快就能绘制出函数图像来。事情并不难,难的是没有方式和方法。

你可能感兴趣的:(2.3python如何绘制二次函数图像)