如何制作变量的叠加图,但是我想制作的每个图都有不同的数据长度

问题描述 投票:0回答:2

我想叠加3​​0个图,每个图都是一天的温度,以便最后比较温度的变化以及一天之间的差异,问题是当我分开数据(以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')
`

上面的代码每天重复,也许一个周期会更快,但我对python的处理不是很好。

结果是这张图是下一张:

enter image description here

我想要的图是这个enter image description here

Mi数据以这种形式表示

enter image description here

这是格式

enter image description here

python python-3.x matplotlib jupyter-notebook overlay
2个回答
0
投票

如果我正确理解了您的问题,您想在一个绘图中整天绘图,则必须在最终将之前包含所有绘图的图像plt.show()整天之前生成一个图形plt.plot()。尝试如下所示的内容:

((由于我不知道您的数据,所以我不知道这段代码是否有效。至少应该清楚这个概念。)

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现在应该会自动进入时间模式。


0
投票

经过Mig B的修改和他不可思议的知识,我做了所有的修改,一个疑问浮出水面,我想在图形中添加图例,但是当图例绘制时,图例会放置所有颜色,但日期是如果有人可以帮助我,我将所有代码都放在代码中]

> imagen = plt.figure(figsize=(25,10))
> 
>
>for day in [1,2,3,4,5,6,8,9,10,13,14,15,17,18,21,23,25,27,28,29,30]:
>     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.xlabel("Tiempo (H:M:S)(Formato 24 Horas)") 
>     plt.ylabel("Temperatura (K)") plt.title("Temperatura Jun 2018")
> plt.legend(datos['Fecha'])
> plt.show() 
>imagen.savefig('TEMPJUN2018')

结果是这个

enter image description here

令我困扰的其他问题是:

如果我想每10分钟计算每天每天的温度的最小值,最大值,平均值和标准偏差,我该怎么办?每天获得aprox 144值。

指向我用于代码的数据的链接是:mega.nz/#!cDQGCISJ!LUD9JhJIOVGyhmS8iyHQo6x9V9KWUdfR0_T882PAv0c

© www.soinside.com 2019 - 2024. All rights reserved.