У меня есть 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
Код: Выделить всё
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
У меня есть интуиция, что это что-то очень простое, но я не могу понять это.
Я думал, что этот пост решит мою проблему, но, используя ту же логику, что и трехмерный график поверхности, который я получаю на самом деле это всего лишь 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