Как сделать оверлейные графики переменной, но каждый график, который я хочу создать, имеет разную длину данных - PullRequest
0 голосов
/ 13 октября 2019

Я хочу наложить 30 графиков, каждый из которых представляет собой температуру одного дня, чтобы в конце сравнить динамику развития температуры и насколько они отличаются от одного дня к другому, проблема в том, что когда я отделяюсьданные (разделенные на 30 дней) в пандах, каждый день набор данных имеет разную длину, например, первый день имеет 54977 данных о температуре, а второй день имеет 54988 и третий также отличается, поэтому в резюме я хотел бы получить следующее: наложение30 графиков и на полученном графике ось x использует временные тики первого дня, а остальные 29 графиков просто соответствуют этим тикам и сокращают данные до предела на графике, чтобы все они начинались с точки, заканчивающейся в концеС другой стороны, не имеет значения, если несколько часов или данных будут потеряны, я просто хочу сделать что-то вроде этого (см. последнее изображение).

Код пока такой, я не очень хорош в Python, так что не судите мою длиннуюкод

`
import pandas as pd
from datetime import date
import datetime as dt
import calendar
import numpy as np
import pylab as plt 
import matplotlib.ticker as ticker
import seaborn as sns
>
datos = pd.read_csv("Jun2018T.txt", sep = ',', names=('Fecha', 'Hora', 'RADNETA', 'RADCORENT', 'RADCORSAL', 'RADINFENT', 'RADINFSAL', 'TEMP'))
>
datos['Hora'] = datos['Hora'].str[:9]
datos['Hora']
>
Dia01Jun2018 = datos[datos['Fecha'] == "2018-06-01"]
>
tiempo01=Dia01Jun2018['Hora']
temp01=Dia01Jun2018['TEMP']
>
imagen = plt.figure(figsize=(25,10))
plt.plot(tiempo01,temp01)
plt.xticks(np.arange(0, 54977, 7000)) #the number 54977 is the last data that the first day has, the second day has a different length an so on with the rest of the days
plt.xlabel("Tiempo (H:M:S)(Formato 24 Horas)")
plt.ylabel("Temperatura (K)")
plt.title("Día 01 Jun 2018")
plt.show()
imagen.savefig('D1JUN2018')
`

Код выше повторяется для каждого дня, может быть, с циклом быстрее, но я не справлюсь сython очень хорошо.

И результат этого графика следующий:

введите описание изображения здесь

график, который я хочуэто введите описание изображения здесь

Mi данные представлены в этой форме

введите описание изображения здесь

и этоформаты

введите описание изображения здесь

1 Ответ

0 голосов
/ 14 октября 2019

Если я правильно понял ваш вопрос, что вы хотите построить все дни на одном графике, вы должны сгенерировать одну цифру, plt.plot () за все дни до того, как вы наконец-то сделаете plt.show () изображение, включая все созданные ранее графики. ,Попробуйте что-то вроде показанного ниже:

(так как я не знаю ваших данных, я не знаю, сработает ли этот код. Концепция должна быть по крайней мере понятна).

import pandas as pd
from datetime import date
import datetime as dt
import calendar
import numpy as np
import pylab as plt 
import matplotlib.ticker as ticker
import seaborn as sns
>
datos = pd.read_csv("Jun2018T.txt", sep = ',', names=('Fecha', 'Hora', 'RADNETA', 'RADCORENT', 'RADCORSAL', 'RADINFENT', 'RADINFSAL', 'TEMP'))
>
datos['Hora'] = datos['Hora'].str[:9]

>

imagen = plt.figure(figsize=(25,10))

for day in range(1,31):
    dia = datos[datos['Fecha'] == "2018-06-"+(f"{day:02d}")]
    tiempo= pd.to_datetime(dia['HORA'], format='%H:%M:%S').dt.time
    temp= dia['TEMP']
    plt.plot(tiempo, temp)

#plt.xticks(np.arange(0, 54977, 7000)) 
plt.xlabel("Tiempo (H:M:S)(Formato 24 Horas)")
plt.ylabel("Temperatura (K)")
plt.title("Jun 2018")
plt.show()
imagen.savefig('JUN2018')

Для второй части вашего вопроса: поскольку ваши данные хранятся с отметкой времени, вы можете преобразовать ее в объекты времени панд. Используя их для графиков, ось X больше не должна иметь смещения. Я изменил назначение tiempo =... в приведенном выше коде.

Теперь x-tics должен автоматически переключаться в режим времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...