如何做一个变量的叠加图,但是每个图都有不同的长度d

2024-06-01 00:44:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想叠加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')
`

上面的代码每天都在重复,也许循环更快,但我对python的处理不是很好。你知道吗

这张图的结果是下一张:

enter image description here

我想要的图表是 enter image description here

Mi数据以这种形式表示

enter image description here

这就是格式

enter image description here


Tags: the数据代码imageimporthereasplt
1条回答
网友
1楼 · 发布于 2024-06-01 00:44:43

如果我对你的问题理解正确,你想把所有的日子都画在一个图上,你就必须产生一个数字,plt.绘图()在你最后节目()图像,包括之前制作的所有绘图。尝试如下所示的操作:

(因为我不知道你的数据,我不知道这个代码是否有效。这个概念至少应该很清楚。)

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现在应该自动处于时间模式。你知道吗

相关问题 更多 >