大多数面向对象的matplotlib示例都会获得类似的Axis对象
import matplotlib.pyplot as plt
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot(...... etc.
Run Code Online (Sandbox Code Playgroud)
我总是发现这是不明显的,特别是从matlab的角度来看.我最近发现可以通过获得相同的结果
ax1 = fig1.gca() # "GetCurrentAxis"
Run Code Online (Sandbox Code Playgroud)
这对我来说更有意义(可能只是由于之前的Matlab使用).为什么add_subplot()选择了令人困惑的111参数作为获取轴对象的首选方法?有什么功能差异吗?
谢谢!
如果您熟悉Matlab,则会有一个全局变量ans捕获未分配给任何特定变量的函数的第一个返回值.Python中是否有任何匹配的构造?
我试图input()在用户使用标准缩放控件操作绘图后获取用户输入。例如。用户操作绘图,计算出所需的 X 值,并将其输入到命令行提示符中。
绘图可以在单独的窗口中(Spyder/Python)或内嵌(在 Jupiter Notebook 中)。
用户输入值后,脚本继续(例如,从图中请求另一个值,或对这些值进行一些计算)。
但是,当命令行等待用户输入时,我无法让绘图实际显示并做出响应。我努力了:
plot()先声明,input()后声明。%matplotlib, notebook,等inlineqtfig.show( block=False )以及它的变体,例如。plt.show( block=False )我确实通过在和语句matplotlib.pyplot.pause(0.5)之间添加一个来实际更新绘图(以前它要么是笔记本中的空白区域,要么是空白的单独图形窗口)。这是重大进展,但是一旦脚本命中语句,我就会在图形窗口上看到一个旋转的沙滩球(防止缩放等),直到我通过输入某些内容来完成语句,然后脚本完成。那时情节是互动的。plot()input()input()input()
python 控制台似乎无法同时处理多个用户交互?IE。input()是否冻结所有其他用户交互?
我已经搜索了SO、谷歌等好几天了,但还没有弄清楚这一点!这个想法是使用它作为一种“快速而肮脏”的方式从图中获取用户输入,然后再进行理论上更复杂的任务,即直接从图中获取用户点击(这必须捕捉到绘制的数据,例如数据)光标)。
我正在从商业仪器中获取光学OFDR (1,2,3 )数据的FFT 。
然而,我花了几天时间困惑为什么 FFT 没有给出预期的结果。原来这是因为我导入的数组具有 shape(20000,1)而不是(20000,). 前者的 FFT(20000,1)返回不变,而具有形状的对象的 FFT(20000,)会产生正确的结果。从概念上讲,这些对我来说似乎是完全相同的数组 - 但实际上它们显然是不同的 FFT 计算。
谁能解释为什么这个看似虚构的维度破坏了我的 FFT?
# Produces bad FFT:
>> np.shape(MeasData)
: (433229, 1)
# Produces correct FFT
>> np.shape(MeasData[:,0])
: (433229,)
Run Code Online (Sandbox Code Playgroud)
第二,空维度意味着什么?也就是说,为什么形状报告为而(2000,)不是(2000)(没有逗号)?
下面是一个图,显示了其中每一个以及相应的傅立叶变换,通过numpy.rfft( MeasData ) (抱歉我不知道如何生成有用的 MWE 数据):

第一个和第二个 (MeasData = [433000,1]) 显示 FFT 根本没有执行任何操作,而第三个和第四个 (MeasData = [433000,]) 显示正确的 FFT。
[400000,1]形状与 不同有何意义[400000,]?看起来很违反直觉。