我正在尝试绘制频谱图。我在matplotlib中使用imshow
。
问题在于,我正在从C ++生成的文本文件中读取数据(它实际上创建了一个2D矢量并将其存储到文本文件中)然后我在文本文件和绘图中读取。
下面是我生成的图表的输出(来自C ++并导入到python中):
这是谱图的图,实际上是Python(使用matplotlib):
正如您所看到的,交换了x轴和y轴,这给了我实际频谱图的错误形状。
为什么会这样?例如,我是否可以首先阅读错误的数据并且这已经发生了?或者,我可能不是设置x,y轴本身吗?
非常感谢任何帮助
编辑:
我使用这个函数读取数组:
def split_at_empty_lines(filename):
with open(filename) as f:
arr = []
for line in f:
if not line.strip() and arr:
yield arr
arr = []
elif line.strip(): arr.extend(float(x) for x in line.split())
if arr: yield arr;
通过执行以下操作生成频谱图:
a = list(split_at_empty_lines("file.txt");
hm = ax.imshow(a, interpolation='nearest',origin='lower',aspect='auto')
结果如下:
[[ 26.9287 30.9089 34.9285 ..., 23.016 28.9027 36.4073]
[ 26.7964 26.8524 32.7296 ..., 22.9524 28.6145 33.7204]
[ 26.4222 27.0941 29.094 ..., 22.5309 27.6803 26.7073]
...,
[ 25.9362 25.8307 29.7039 ..., 22.0084 25.9855 28.9602]
[ 26.4222 27.0941 29.094 ..., 22.5309 27.6803 26.7073]
[ 26.7964 26.8524 32.7296 ..., 22.9524 28.6145 33.7204]]
结果如下:
我不知道为什么我会得到如此不同的结果。
答案 0 :(得分:2)
如果您正在使用numpy
将数据读入ndarray
,则可以在绘图之前转置数组。
import numpy as np
a = np.array(split_at_empty_lines("file.txt"))
print(a.T)
应该产生
array([[1, 4],
[2, 5],
[3, 6]])