其中有兩個非常漂亮的指數(shù)函數(shù)圖就是用python的matplotlib畫出來的。這一期,我們將要介紹如何利用python繪制出如下指數(shù)函數(shù)。
安澤網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、自適應網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。
圖 1 a1圖 1 a1
我們知道當0 ,指數(shù)函數(shù) 是單調(diào)遞減的,當a1 時,指數(shù)函數(shù)是單調(diào)遞增的。所以我們首先要定義出指數(shù)函數(shù),將a值做不同初始化
import math
...
def exponential_func(x, a): #定義指數(shù)函數(shù)
y=math.pow(a, x)
return y
然后,利用numpy構(gòu)造出自變量,利用上面定義的指數(shù)函數(shù)來計算出因變量
X=np.linspace(-4, 4, 40) #構(gòu)造自變量組
Y=[exponential_func(x) for x in X] #求函數(shù)值
有了自變量和因變量的一些散點,那么就可以模擬我們平時畫函數(shù)操作——描點繪圖,利用下面代碼就可以實現(xiàn)
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方法創(chuàng)建一個繪圖區(qū)對象ax
fig.add_axes(ax) #將繪圖區(qū)對象添加到畫布中
def exponential_func(x, a=2): #定義指數(shù)函數(shù)
y=math.pow(a, x)
return y
X=np.linspace(-4, 4, 40) #構(gòu)造自變量組
Y=[exponential_func(x) for x in X] #求函數(shù)值
ax.plot(X, Y) #繪制指數(shù)函數(shù)
plt.show()
圖 2 a=2
圖2雖簡單,但麻雀雖小五臟俱全,指數(shù)函數(shù)該有都有,接下來是如何讓其看起來像我們在作圖紙上面畫的那么美觀,這里重點介紹axisartist 坐標軸加工類,在的時候我們已經(jīng)用過了,這里就不再多說了。我們只需要在上面代碼后面加上一些代碼來將坐標軸好好打扮一番。
圖 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? #設置負號正常顯示
#----獲取數(shù)據(jù)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? # 繪制扇型的寬度,可以自行調(diào)整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']
#----循環(huán)畫風玫瑰圖
i=0
for idx in data.index:
print(idx)
# 每一行繪制一個扇形
radii = data.loc[idx] # 每一行數(shù)據(jù)
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,后續(xù)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坐標軸以百分數(shù)顯示
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顯示出來, 并調(diào)整位置
#----保存圖片
plt.savefig("./windrose1.svg")
1、首先點擊鍵盤 win+r,打開運行窗口;在窗口中輸入“cmd",點擊確定,打開windows命令行窗口。
2、在cmd命令行窗口中輸入"python",進入python交互窗口。
3、引入matplotlib模塊的pyplot()函數(shù),并重命名為py;引入numpy模塊,并重命名為np。
4、使用函數(shù)np.arrange(-5,5,0.01)創(chuàng)建變量x的取值范圍,是一個一維數(shù)組,使用y=2**x,創(chuàng)建y是與自變量x相對應的一維數(shù)組。
5、使用函數(shù)plt.plot(x,y)繪制指數(shù)函數(shù)y=2**x的函數(shù)圖像。
6、最后使用函數(shù)plt.show()顯示整個一元一次函數(shù)的圖像,就完成了。
import mathmath.e**N或import numpy as npnp.e**N。
知識拓展:
在C語言中,10的n次方可以表示為pow(10, n),其中pow函數(shù)在頭文件math.h中,所以調(diào)用該函數(shù)的時候,必須將math.h加進來,即#include math.h。
原型:extern float pow(float x, float y)。
功能:計算x的y次冪。
說明:x應大于零,返回冪指數(shù)的結(jié)果。
求擬合函數(shù),首先要有因變量和自變量的一組測試或?qū)嶒灁?shù)據(jù),根據(jù)已知的曲線y=f(x),擬合出Ex和En系數(shù)。當用擬合出的函數(shù)與實驗數(shù)據(jù)吻合程度愈高,說明擬合得到的Ex和En系數(shù)是合理的。吻合程度用相關系數(shù)來衡量,即R^2。首先,我們需要打開Python的shell工具,在shell當中新建一個對象member,對member進行賦值。 2、這里我們所創(chuàng)建的列表當中的元素均屬于字符串類型,同時我們也可以在列表當中創(chuàng)建數(shù)字以及混合類型的元素。 3、先來使用append函數(shù)對已經(jīng)創(chuàng)建的列表添加元素,具體如下圖所示,會自動在列表的最后的位置添加一個元素。 4、再來使用extend對來添加列表元素,如果是添加多個元素,需要使用列表的形式。 5、使用insert函數(shù)添加列表元素,insert中有兩個參數(shù),第一個參數(shù)即為插入的位置,第二個參數(shù)即為插入的元素。origin擬合中參數(shù)值是程序擬合的結(jié)果,自定義函數(shù)可以設置參數(shù)的初值,也可以不設定參數(shù)的初值。
一般而言,擬合結(jié)果不會因為初值的不同而有太大的偏差,如果偏差很大,說明數(shù)據(jù)和函數(shù)不太匹配,需要對函數(shù)進行改正。X0的迭代初始值選擇與求解方程,有著密切的關系。不同的初始值得出的系數(shù)是完全不一樣的。這要通過多次選擇和比較,才能得到較為合理的初值。一般的方法,可以通過隨機數(shù)并根據(jù)方程的特性來初選。
您可以直接調(diào)用
import math
math.pow( 2, x )
或者
import math
def zhishu(x):
return math.pow(2, x)