matplotlib 如何制作按月划分的降水直方图?

pbpqsu0x  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(170)

我正在尝试制作某个地方的降水量数据的直方图。我已经成功地制作了一个数据的线图,但是我在1)如何用这个数据制作直方图和2)如何按月份制作直方图上有点卡住了。当我打印precip时,它看起来像这样(例如缩短版):

[0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
 1.92255229e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00
 0.00000000e+00 1.50845976e+01 4.94040642e+01 1.09846497e+01
 2.97186822e-02 0.00000000e+00 0.00000000e+00 5.66242523e-02]

precip的形状是(366,)。数据的matplotlib线图如下所示:

我已经为一个纬度/经度点的原始数据编制了索引,但这是未编制索引数据的信息:

<xarray.DataArray 'precip' (time: 366, lat: 120, lon: 300)>
[13176000 values with dtype=float32]
Coordinates:
  * lat      (lat) float32 20.12 20.38 20.62 20.88 ... 49.12 49.38 49.62 49.88
  * lon      (lon) float32 230.1 230.4 230.6 230.9 ... 304.1 304.4 304.6 304.9
  * time     (time) datetime64[ns] 2020-01-01 2020-01-02 ... 2020-12-31
Attributes:
    long_name:     Daily Accumulated Precipitation
    valid_range:   [  0. 700.]
    units:         mm
    precision:     2
    var_desc:      Precipitation
    dataset:       CPC Unified Gauge-Based Analysis of Daily Precipitation ov...
    level_desc:    Surface
    statistic:     Daily Accumulation
    parent_stat:   Observation
    actual_range:  [  0.      274.80292]
t3irkdon

t3irkdon1#

您可以通过重新采样创建每月摘要统计信息:

monthly_total = da.resample(time="MS").sum()

然后可以绘制直方图:

monthly_total.plot.hist()

或者时间序列条形图:

monthly_total.plot.bar()

有关详细信息,请参阅xarray文档中的重采样和plotting

mrphzbgm

mrphzbgm2#

这和你想做的事是一致的吗?

import pandas as pd
import numpy as np

#generating some data
dates = pd.date_range(start = "2015", end = "2016", freq = "7D")
precip = np.random.rand(len(dates))

df = pd.DataFrame({"dates":dates, "precipitation":precip})
df["month"] = df["dates"].dt.month

df.groupby(by = "month", as_index = True).agg({"precipitation":sum}).plot(kind = "bar")

相关问题