Создайте график спектрограммы, используя три одномерных массива в python с помощью matplotlib

У меня есть 3 столбца данных в большом текстовом файле, каждый столбец которого содержит массив 1d. первый столбец (x) — это время в формате даты и времени, второй столбец (y) — частота, а третий столбец (z) — мощность в дБ. Вот пример данных.

    x (datetime)           y(freq(hz)) z(power(dB))
2017-10-03 14:23:14.787976 80000000.0 3.410517462
2017-10-03 14:23:14.788147 80006250.0 3.74720499199 
2017-10-03 14:23:14.788245 80012500.0 3.48457072216 
2017-10-03 14:23:14.788334 80018750.0 3.82477967161 
2017-10-03 14:23:14.788423 80025000.0 4.10110487733

Я хотел бы построить эти данные для спектрограммы, используя контур matplotlib со временем (x) в качестве оси x, частотой в качестве оси y и мощностью в качестве контура. У меня есть сетка x и y как координата с np.meshgrid, но z по-прежнему является массивом 1d, похоже, формат массива 1d не поддерживает построение с контуром. Должен ли я преобразовать z в массив 2d? Если да, то как мне превратить z в массив 2d?


person Sinta    schedule 13.10.2017    source источник
comment
Ваши данные, похоже, не позволяют использовать 2D-представление. У вас есть одно значение y и одно значение z на x, поэтому вы можете построить y (x) и z (x). Но для того, чтобы построить z (x, y), вам нужно, чтобы x и y фактически уже обозначали некоторые значения в сетке, что здесь, похоже, не так. Два предложения. Во-первых, нарисуйте plt.scatter(x,y, c=z) и посмотрите, как это выглядит, возможно, поделитесь этим графиком здесь. Если это не дает линии точек, постройте plt.tricontourf(x,y,z).   -  person ImportanceOfBeingErnest    schedule 13.10.2017
comment
Возможный дубликат stackoverflow.com/questions/42702920/ Хотя из вопроса неясно, позволяют ли данные это сделать. Можно также закрыть вопрос как слишком широкий или не по теме (без воспроизводимой проблемы).   -  person ImportanceOfBeingErnest    schedule 13.10.2017