2017-12-18 18 views
0

다음과 같이 플랑크 방정식을 플롯하려고합니다. 매쓰 매 티카를 사용할 때 잘 그려집니다.하지만 파이썬으로 할 때, 제대로 할 수 없었습니다. 그것은 기본적으로 ~ 1.0um 파장 이하로 음모를 꾸미지 않습니다. 첨부 된 이미지 및 코드를 참조하십시오. 당신이 도울 수 있다면, 그것은 매우 인정 될 것입니다. 미리 감사드립니다.플랭크 방사 방정식에서 제한된 범위의 로그 스케일 플롯

import matplotlib.pyplot as plt 
from matplotlib import pyplot 
from matplotlib import pylab 
import numpy as np 

h = 6.626e-34 
c = 2.9979e+8 
k = 1.38e-23 

def planck(wav, T): 
    a = 2.0*3.14*h*c**2 
    b = h*c/(wav*1e3*1e-9*k*T) 
    intensity = a/ (((wav*1e3*1e-9)**5) * (np.exp(b) - 1.0))*1e-6 
    return intensity 

wavelengths = np.logspace(1e-2, 1e2, 1e4, endpoint=False) 

intensity310 = planck(wavelengths, 310.) 
intensity3000 = planck(wavelengths, 3000.) 
intensity5800 = planck(wavelengths, 5800.) 
intensity15000 = planck(wavelengths, 15000.) 

plt.plot(wavelengths, intensity310, 'k-') # 5000K Black line 
plt.plot(wavelengths, intensity3000, 'r-') # 5000K green line 
plt.plot(wavelengths, intensity5800, 'y-') # 6000K blue line 
plt.plot(wavelengths, intensity15000, 'b-') # 7000K Red line 
pyplot.xscale('log') 
pyplot.yscale('log') 
pylab.xlim([1e-2,1e2]) 
pylab.ylim([1,1e10]) 
plt.show() 

A plot using Python

티카

사용하여 플롯을 파이썬 를 사용하는 플롯은

답변

0

np.logspace()의 사용량에 실수 있습니다. 1e-2에서 1e2까지의 값을 원하면 -22과 같은 함수를 각각 호출해야합니다 (예 : np.logspace(-2, 2, 1e4)). 게다가 로그 스케일 플롯을 만들고 싶다면 pyplot.loglog() 기능을 사용할 수 있습니다. pylab을 가져올 필요가 없습니다.

import matplotlib.pyplot as plt 
import numpy as np 

h = 6.626e-34 
c = 2.9979e+8 
k = 1.38e-23 

def planck(wav, T): 
    a = 2.0*3.14*h*c**2 
    b = h*c/(wav*1e3*1e-9*k*T) 
    intensity = a/ (((wav*1e3*1e-9)**5) * (np.exp(b) - 1.0))*1e-6 
    return intensity 

wavelengths = np.logspace(-2, 2, 1e4, endpoint=False) 

intensity310 = planck(wavelengths, 310.) 
intensity3000 = planck(wavelengths, 3000.) 
intensity5800 = planck(wavelengths, 5800.) 
intensity15000 = planck(wavelengths, 15000.) 

plt.loglog(wavelengths, intensity310, 'k-') # 5000K Black line 
plt.loglog(wavelengths, intensity3000, 'r-') # 5000K green line 
plt.loglog(wavelengths, intensity5800, 'y-') # 6000K blue line 
plt.loglog(wavelengths, intensity15000, 'b-') # 7000K Red line 
plt.xlim([1e-2,1e2]) 
plt.ylim([1,1e10]) 
plt.show() 

나는 다음과 같은 그래프를 얻을 : 아래의 코드를 참조

Plot

+0

친애하는 아 미트 싱, 이것은 내가 무엇을 찾고있다. 도와 주셔서 정말 감사합니다. 정말 감사. – mocs

+0

당신은 환영합니다! –