MATLAB - > Python转换尝试让IPython笔记本工作。在Windows 7上通过Anaconda2运行PyCharm 2016.3.2和Python 2.7.13。
我有一台IPython笔记本,在我的机器Jupyter上运行得很好,我试图在浏览器之外运行。显示行为的最小工作示例分为两个单元格。第一个单元格是函数定义(为了演示目的而减少),第二个单元格(以及后续单元格未显示)重复调用第一个:
def spectrumPlot(NspectraFiles, laserLines, gaussAmp):
import numpy as np
import matplotlib.pyplot as plt
def rgb(r, g, b):
outMap = (float(r)/255, float(g)/255, float(b)/255)
return outMap
def gaussian(x, mu, sig):
return np.exp(-np.power(x - mu, 2.) / (2 * np.power(sig, 2.)))
def genData(gaussAmp):
csv = np.empty([550, 3])
csv[:,0] = np.linspace(350, 900, 550)
csv[:,1] = gaussAmp*gaussian(csv[:,0], np.random.rand(1)*550 + 350, 100)
csv[:,2] = gaussAmp*gaussian(csv[:,0], np.random.rand(1)*550 + 350, 100)
return csv
fluorColorCycle = [rgb(155, 89, 182),
rgb(52, 152, 219),
rgb(46, 204, 113),
rgb(230, 126, 34),
rgb(192, 57, 43)]
for k in range(0, NspectraFiles):
dataHere = genData(gaussAmp)
plt.plot(dataHere[:,0], dataHere[:,1], color=fluorColorCycle[k], ls = '--', linewidth=0.5)
plt.plot(dataHere[:,0], dataHere[:,2], color=fluorColorCycle[k], linewidth = 2)
# Add in lasers
for k in range(0, len(laserLines)):
plt.plot([laserLines[k], laserLines[k]], [0, 100], color = fluorColorCycle[k], linewidth = 5)
plt.xlabel('Wavelength (nm)', fontsize=14)
plt.ylabel('Intensity (a.u.)', fontsize=14)
plt.rcParams["figure.figsize"] = [10, 5]
plt.xlim(350, 900)
plt.show()
NspectraFiles = 5
laserLines = [405, 488, 561, 637, 730]
spectrumPlot(NspectraFiles, laserLines, 45)
在执行这两个单元格后应该发生的是我得到的图表在指示的'laserLines'位置显示一些垂直彩色条,幅度为100,NspectraFiles随机放置第三个参数幅度的高斯峰到spectrumPlot (45这里)。 但是如果第三个参数大于45,那么情节并不总是出现。如果它在~44-50之间,那么该图将出现,但不会
我尝试过设置
%matplotlib inline
在第一个单元格的import语句下。这使得图表可靠地出现,但我似乎无法使用
重新调整它们的大小plt.rcParams["figure.figsize"]
属性。
有关为什么根据计算参数不会出现图表的任何帮助?或者一个解决方法,让我仍然可以修改绘图大小?