簡體   English   中英

在matplotlib中的繪圖上繪制均值

[英]Plotting the means on a plot in matplotlib

我有一個包含多個溫度曲線的數據集,我想創建一個平均溫度曲線。 為此,我認為如果可以計算每個深度的平均值,則可以簡單地在圖中繪制每個深度的平均溫度。

我知道,為了計算某個深度的平均溫度,我可以使用:

    import numpy as np
    import datetime as dt
    import matplotlib.pyplot as plt
    #read in data here
    temper2out = []

    temperature2m = np.mean(temperature[depth==2])
    temper2out.extend(list(temperature2m)

    T2out = np.array(temper2out)
    t2 = np.mean(T2out)
    tout.extend(list(t2)) #I could then do this for every depth, but since it goes to 150m, that would be lengthy.
    Tout = np.array(tout) 

我知道這可以為我帶來一些結果,但這是一個漫長的嘗試。 我也真的不知道該如何繪制。 所以我的問題是,是否有更好的方法來完成此任務? 如果是這樣,怎么辦? 很抱歉問這么多,我是Python的新手!

數據采用這種格式(很抱歉,我不知道如何獲取粘貼框):

TagID    ProfileNo   ProfileDirn     DateTime    Lat     Lon     Depth   Temperature
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 2   5.04
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 3   5.0382
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 4   5.0262
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 5   5.0105
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 6   4.993
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 7   4.9866
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 8   4.9709
pv42-156-12 1    A   25/01/2012 00:00   52.90618    0.36051 9   4.97
pv42-156-12 2    A   25/01/2012 00:00   52.90493    0.35768 2   4.98
pv42-156-12 2    A   25/01/2012 00:00   52.90493    0.35768 3   4.9783
pv42-156-12 2    A   25/01/2012 00:00   52.90493    0.35768 4   4.9739
pv42-156-12 2    A   25/01/2012 00:00   52.90493    0.35768 5   4.9733
pv42-156-12 2    A   25/01/2012 00:00   52.90493    0.35768 6   4.9733
pv42-156-12 2    A   25/01/2012 00:00   52.90493    0.35768 7   4.9717
pv42-156-12 2    A   25/01/2012 00:00   52.90493    0.35768 8   4.97
pv42-156-12 3    A   25/01/2012 00:00   52.89433    0.35407 2   5.05
pv42-156-12 3    A   25/01/2012 00:00   52.89433    0.35407 3   5.05
pv42-156-12 3    A   25/01/2012 00:00   52.89433    0.35407 6   5.05
pv42-156-12 3    A   25/01/2012 00:00   52.89433    0.35407 7   5.05
pv42-156-12 3    A   25/01/2012 00:00   52.89433    0.35407 8   5.05
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 2   5.17
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 3   5.1521
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 4   5.1423
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 5   5.1274
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 6   5.1075
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 7   5.1056
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 8   5.0828
pv42-156-12 4    A   25/01/2012 00:00   52.89037    0.35476 9   5.05
pv42-156-12 5    A   25/01/2012 00:00   52.88979    0.35553 2   5.36
pv42-156-12 5    A   25/01/2012 00:00   52.88979    0.35553 3   5.3392
pv42-156-12 5    A   25/01/2012 00:00   52.88979    0.35553 4   5.3263
pv42-156-12 5    A   25/01/2012 00:00   52.88979    0.35553 5   5.2937
pv42-156-12 5    A   25/01/2012 00:00   52.88979    0.35553 6   5.2828
pv42-156-12 5    A   25/01/2012 00:00   52.88979    0.35553 7   5.2729
pv42-156-12 5    A   25/01/2012 00:00   52.88979    0.35553 9   5.26
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 2   5.15
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 3   5.147
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 4   5.142
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 5   5.103
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 6   5.065
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 7   5.053
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 8   5.043
pv42-156-12 6    A   25/01/2012 00:00   52.88875    0.35713 9   5.04
pv42-156-12 7    A   25/01/2012 00:00   52.88661    0.35636 2   5.31
pv42-156-12 7    A   25/01/2012 00:00   52.88661    0.35636 3   5.32
pv42-156-12 7    A   25/01/2012 00:00   52.88661    0.35636 4   5.3229
pv42-156-12 7    A   25/01/2012 00:00   52.88661    0.35636 5   5.3243
pv42-156-12 7    A   25/01/2012 00:00   52.88661    0.35636 6   5.33
pv42-156-12 7    A   25/01/2012 00:00   52.88661    0.35636 8   5.33
pv42-156-12 8    A   25/01/2012 00:00   52.88602    0.35538 2   5.282
pv42-156-12 8    A   25/01/2012 00:00   52.88602    0.35538 3   5.28
pv42-156-12 8    A   25/01/2012 00:00   52.88602    0.35538 5   5.28
pv42-156-12 8    A   25/01/2012 00:00   52.88602    0.35538 6   5.284
pv42-156-12 8    A   25/01/2012 00:00   52.88602    0.35538 7   5.284
pv42-156-12 8    A   25/01/2012 00:00   52.88602    0.35538 8   5.29
pv42-156-12 9    A   25/01/2012 00:00   52.88558    0.35458 2   5.26
pv42-156-12 9    A   25/01/2012 00:00   52.88558    0.35458 3   5.2627
pv42-156-12 9    A   25/01/2012 00:00   52.88558    0.35458 4   5.2709
pv42-156-12 9    A   25/01/2012 00:00   52.88558    0.35458 5   5.2755
pv42-156-12 9    A   25/01/2012 00:00   52.88558    0.35458 6   5.2791
pv42-156-12 9    A   25/01/2012 00:00   52.88558    0.35458 7   5.28
pv42-156-12 9    A   25/01/2012 00:00   52.88558    0.35458 8   5.28
pv42-156-12 10   A   25/01/2012 00:00   52.88433    0.35418 2   5.26
pv42-156-12 10   A   25/01/2012 00:00   52.88433    0.35418 3   5.2648
pv42-156-12 10   A   25/01/2012 00:00   52.88433    0.35418 4   5.2648
pv42-156-12 10   A   25/01/2012 00:00   52.88433    0.35418 5   5.2705
pv42-156-12 10   A   25/01/2012 00:00   52.88433    0.35418 6   5.2743
pv42-156-12 10   A   25/01/2012 00:00   52.88433    0.35418 7   5.2752
pv42-156-12 10   A   25/01/2012 00:00   52.88433    0.35418 8   5.28
import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('data', delimiter='\t', dtype=None, names=True)

min_depth, max_depth = data['Depth'].min(), data['Depth'].max()
temps = data['Temperature']
depths = data['Depth']
avg_temp = []
ds = np.arange(min_depth, max_depth+1)
for d in ds:
    mask = (depths==d)
    t = temps[mask].mean()
    avg_temp.append(t)

plt.plot(ds, avg_temp)
plt.show()

在此處輸入圖片說明


使用pandas ,任務更加簡單:

import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_table('data', delim_whitespace=True)
avg_temp = data.groupby('Depth')['Temperature'].agg('mean')
avg_temp.plot()
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM