Python - 2个函数的3D绘图

时间:2017-01-03 11:14:23

标签: python arrays 3d

我不太擅长python,我需要你的帮助。 首先,我将告诉你我已经做了什么以及它是如何工作的,然后我会问我的问题。

以下代码正在运行,我试图解释我在做什么:

import numpy as np                  
import matplotlib.pyplot as plt
from scipy.integrate import odeint          
from scipy import integrate 
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
#======================================================
def eq(par,initial_cond,start_t,end_t,incr):
     # time-grid-----------------------------------
     t  = np.linspace(start_t, end_t,incr)      
     # differential-eq-system----------------------
     def funct(y,t):                    
        A=y[0]                      
        k_1A=par
        # the model equations   
        dgl_A = -k_1A * A 
        dgl_B = k_1A * A 
        return [dgl_A, dgl_B]       
     #integrate------------------------------------
     ds = integrate.odeint(funct,initial_cond,t)                
     return (ds[:,0],ds[:,1],t) 

#=======================================================

# rates 
k_1A = 50   
rates=(k_1A)        
# initial conditions at t=0
A0 = 0.034                  
B0 = 0.074              
y0 = [A0, B0]       # initial condition vector

F7,F1,T=eq(rates,y0,0,1.,100)
#saving F1 into F20
F20=F1

 ############################################################################
def gaussian(Y, mu, sig,N0):
    return N0*np.exp(-np.power(Y - mu, 2.) / (2 * np.power(sig, 2.)))

n=100
laser1 = np.arange(n)                      #array for frequency
laser3=np.arange(n,dtype=np.float)         #array for gaussian



for i in laser1:
     k_1A = 50*gaussian(i,50,10,1)     
     rates=(k_1A)       
     F7,F1,T=eq(rates,y0,0,1.,100)                  
     laser3[i]=F1[1]  


############ plotting #############################
f = plt.figure()
plt.plot(laser1,laser3,'-r', linewidth=2.0)
f = plt.figure()
plt.plot(T,F20)
plt.show()

我有2个DGL(反应A - > B,速率为k_1A),并且我在第一部分解决它们。之后我可以绘制F20 = F1(这是状态B中的数字)与时间T的关系。在for循环中,iam计算新的速率k_1A(取决于高斯)并因此计算B中的新数字,即F1,并在一定时间将它们保存到laser3(laser3 [i] = F1 [1。])。然后我绘制激光3与激光1并绘制高斯。

现在,我需要什么? 我想将其绘制成3D图形,因此在x轴上是时间,在y轴上是频率(laser1),在z轴上是B的数量(F20 / F1)。 我是针对分析案例做的,如下图所示:enter image description here

所以我想在一个轴上高斯与频率以及另一个B(F20 = F1)对时间的数量。我希望你们明白我的意思和想要做的事情。我希望你能帮助我。 非常感谢。

0 个答案:

没有答案