Как разрезать 2D-линейный график, чтобы создать 3D-график поверхности (или контурный график)? ПитонPython

Программы на Python
Anonymous
Как разрезать 2D-линейный график, чтобы создать 3D-график поверхности (или контурный график)? Питон

Сообщение Anonymous »

Проблема:
У меня есть CSV-файл с двумя столбцами: «Время» и «Интенсивность», который я могу построить, чтобы получить очень плотный линейный график. Время варьируется от 900 до 11 496 секунд, и на каждую секунду у меня есть 200 наблюдений.
Вместо того, чтобы иметь сверхплотный и совершенно нечитаемый график зависимости времени от интенсивности, я бы хотел разрезать мои данные разбиты на периоды в 1 секунду (= 200 наблюдений) и нанесены эти срезы на график зависимости времени от времени от интенсивности, либо контурный, либо поверхностный график.
Изображение ниже гораздо более наглядное, чем то, что я только что описано.
Изображение

Вот несколько фиктивных данных, иллюстрирующих мою проблему:

Код: Выделить всё

import random

dummy_time = range(1, 101, 1)
dummy_intensity = random.sample(range(1, 100000), 100)

df_dummy = pd.DataFrame(dummy_time, columns=["time"])
df_dummy["intensity"] = dummy_intensity
Используя фиктивный пример, я «нарезал» свои данные так, чтобы получить 10 срезов по 10 наблюдений:

Код: Выделить всё

df_dummy["time_1"] = 0

t = 1
for i in range(0,110,10):
df_dummy["time_1"].iloc[i:i+10] = t
t = t + 1

df_dummy["time_2"] = 0

t = range(1,11,1)
for i in range(0,100,10):
df_dummy["time_2"][i:i+10] = t
Имея в виду приведенное выше изображение, я подумал, что могу просто построить график time_1 в сравнении с time_2 и добавить цветовое измерение с интенсивностью, но получилось это не так просто... Для создания графиков поверхности и контуров мне нужно, чтобы данные Z были двумерными, а это не так, и я не уверен, как их можно сделать двумерными...
У меня есть интуиция, что это что-то очень простое, но я не могу понять это.
Я думал, что этот пост решит мою проблему, но, используя ту же логику, что и трехмерный график поверхности, который я получаю на самом деле это всего лишь 2D-сюжет:

Код: Выделить всё

x = np.reshape(np.array(df.time_1), (10, 10))
y = np.reshape(np.array(df.time_2), (10, 10))
z = np.reshape(np.array(df.intensity), (10, 10))

fig = go.Figure(data=[go.Surface(z=z, x=x, y=y)])
fig.update_layout(width=500, height=500,
margin=dict(l=65, r=50, b=65, t=90))
fig.show()
Если бы я мог получить совет, не обязательно писать даже какой-то псевдокод, чтобы направить меня на правильный путь, это было бы очень полезно. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/787 ... plot-pytho

Вернуться в «Python»