其中有两个非常漂亮的指数函数图就是用python的matplotlib画出来的。这一期,我们将要介绍如何利用python绘制出如下指数函数。
安泽网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
图 1 a1图 1 a1
我们知道当0 ,指数函数 是单调递减的,当a1 时,指数函数是单调递增的。所以我们首先要定义出指数函数,将a值做不同初始化
import math
...
def exponential_func(x, a): #定义指数函数
y=math.pow(a, x)
return y
然后,利用numpy构造出自变量,利用上面定义的指数函数来计算出因变量
X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
有了自变量和因变量的一些散点,那么就可以模拟我们平时画函数操作——描点绘图,利用下面代码就可以实现
import math
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist #导入坐标轴加工模块
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
fig=plt.figure(figsize=(6,4)) #新建画布
ax=axisartist.Subplot(fig,111) #使用axisartist.Subplot方法创建一个绘图区对象ax
fig.add_axes(ax) #将绘图区对象添加到画布中
def exponential_func(x, a=2): #定义指数函数
y=math.pow(a, x)
return y
X=np.linspace(-4, 4, 40) #构造自变量组
Y=[exponential_func(x) for x in X] #求函数值
ax.plot(X, Y) #绘制指数函数
plt.show()
图 2 a=2
图2虽简单,但麻雀虽小五脏俱全,指数函数该有都有,接下来是如何让其看起来像我们在作图纸上面画的那么美观,这里重点介绍axisartist 坐标轴加工类,在的时候我们已经用过了,这里就不再多说了。我们只需要在上面代码后面加上一些代码来将坐标轴好好打扮一番。
图 3 a1 完整代码# -*- coding: utf-8 -*-图 3 a1 完整代码# -*- coding: utf-8 -*-"""Created on Sun Feb 16 10:19:23 2020project name:@author: 帅帅de三叔"""import mathimport numpy as npimport matplotlib.pyplot as pltimport mp
#导入包
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib.ticker import FuncFormatter
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #设置简黑字体
mpl.rcParams['axes.unicode_minus'] = False #设置负号正常显示
#----获取数据DataFrames,index*columns。index表示不同值范围,columns表示十六个风向
data = pd.DataFrame(wind_d_max_num_per,
index=['15', '15~25', '25~35', '35~45',"≥45"],
columns='N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW'.split())
N = 16 # 风速分布为16个方向
theta = np.linspace(0, 2*np.pi, N, endpoint=False) # 获取16个方向的角度值
width = np.pi / 4 * 0.4 # 绘制扇型的宽度,可以自行调整0.5时是360,充满,有间隔的话小于0.5即可
labels = list(data.columns) # 自定义坐标标签为 N , NSN, ……# 开始绘图
plt.figure(figsize=(6,6),dpi=600)
ax = plt.subplot(111, projection='polar')
#----自定义颜色
mycolor =['cornflowerblue','orange','mediumseagreen','lightcoral','cyan']
#----循环画风玫瑰图
i=0
for idx in data.index:
print(idx)
# 每一行绘制一个扇形
radii = data.loc[idx] # 每一行数据
if i == 0:
ax.bar(theta, radii, width=width, bottom=0.0, label=idx, tick_label=labels,
color=mycolor[i])
else:
ax.bar(theta, radii, width=width, bottom=np.sum(data.loc[data.index[0:i]]), label=idx, tick_label=labels,
color=mycolor[i])
i=i+1
#此种画法,注意bottom设置,第一个bottom为0,后续bottom需要在前一个基础上增加。
ax.set_xticks(theta)
ax.set_xticklabels(labels,fontdict={'weight':'bold','size':15,'color':'k'})
ax.set_theta_zero_location('N') #设置零度方向北
ax.set_theta_direction(-1) # 逆时针方向绘图
#----设置y坐标轴以百分数显示
plt.gca().yaxis.set_major_formatter(FuncFormatter(lambda s, position: '{:.0f}%'.format(100*s)))
plt.legend(loc=4, bbox_to_anchor=(0.05, -0.25),fontsize=12) # 将label显示出来, 并调整位置
#----保存图片
plt.savefig("./windrose1.svg")
1、首先点击键盘 win+r,打开运行窗口;在窗口中输入“cmd",点击确定,打开windows命令行窗口。
2、在cmd命令行窗口中输入"python",进入python交互窗口。
3、引入matplotlib模块的pyplot()函数,并重命名为py;引入numpy模块,并重命名为np。
4、使用函数np.arrange(-5,5,0.01)创建变量x的取值范围,是一个一维数组,使用y=2**x,创建y是与自变量x相对应的一维数组。
5、使用函数plt.plot(x,y)绘制指数函数y=2**x的函数图像。
6、最后使用函数plt.show()显示整个一元一次函数的图像,就完成了。
import mathmath.e**N或import numpy as npnp.e**N。
知识拓展:
在C语言中,10的n次方可以表示为pow(10, n),其中pow函数在头文件math.h中,所以调用该函数的时候,必须将math.h加进来,即#include math.h。
原型:extern float pow(float x, float y)。
功能:计算x的y次幂。
说明:x应大于零,返回幂指数的结果。
求拟合函数,首先要有因变量和自变量的一组测试或实验数据,根据已知的曲线y=f(x),拟合出Ex和En系数。当用拟合出的函数与实验数据吻合程度愈高,说明拟合得到的Ex和En系数是合理的。吻合程度用相关系数来衡量,即R^2。首先,我们需要打开Python的shell工具,在shell当中新建一个对象member,对member进行赋值。 2、这里我们所创建的列表当中的元素均属于字符串类型,同时我们也可以在列表当中创建数字以及混合类型的元素。 3、先来使用append函数对已经创建的列表添加元素,具体如下图所示,会自动在列表的最后的位置添加一个元素。 4、再来使用extend对来添加列表元素,如果是添加多个元素,需要使用列表的形式。 5、使用insert函数添加列表元素,insert中有两个参数,第一个参数即为插入的位置,第二个参数即为插入的元素。origin拟合中参数值是程序拟合的结果,自定义函数可以设置参数的初值,也可以不设定参数的初值。
一般而言,拟合结果不会因为初值的不同而有太大的偏差,如果偏差很大,说明数据和函数不太匹配,需要对函数进行改正。X0的迭代初始值选择与求解方程,有着密切的关系。不同的初始值得出的系数是完全不一样的。这要通过多次选择和比较,才能得到较为合理的初值。一般的方法,可以通过随机数并根据方程的特性来初选。
您可以直接调用
import math
math.pow( 2, x )
或者
import math
def zhishu(x):
return math.pow(2, x)