-1

24時間に渡る座標とタイムスタンプのリストがあります。一日中マップを表示するアニメーションのヒートマップを作成したいと思います。

Basemapのサンプルギャラリーを見てみましたが、コードが少し複雑すぎて、基本的なヒートマップを思い付くことができません。私が具体的に理解していないdataのは、関数のパラメーターですcontourf()

どうすれば続行できますか?

PS:サンプルデータ:

[{'date': datetime.datetime(2013, 3, 12, 6, 13, 0), 'loc': (46.448269, 16.363296)},
 {'date': datetime.datetime(2013, 3, 12, 6, 13, 1), 'loc': (37.702152, -120.127964)},
 {'date': datetime.datetime(2013, 3, 12, 6, 13, 1), 'loc': (14.484318, 121.037639)},
 ...]
4

2 に答える 2

2

data等高線で表現するデータです。等高線を描画するにはz、マップ上の各 (x, y) ポイントに値を関連付けます。 datazです。たとえば、温度の等高線図を作成したい場合は、温度にdataなります。

サンプルデータを考えると、何をプロットしたいのかわかりません。タイムスタンプと場所がありますが、それらの値に関連付けられたデータはありません。それだけで等高線をプロットするのは意味がありません (場所ごとに 1 つのタイムスタンプしかなく、時間を z 値として単一の静的マップをプロットしたい場合を除きます)。「1 日を通してアニメーション化された等高線マップ」だけではなく、1 日を通して何か(つまり、他の量) のアニメーション化された等高線マップが必要です。マップに表示される値で何を表現しますか? あなたの従属変数は何ですか?

変数を「これらの座標でのデータ ポイントの数」にしたい場合は、最初にそれを計算する必要があります。つまり、データを座標/時間でグループ化し、各場所/時間のデータ ポイントの数を数えます。次のようなテーブルに相当するものが必要です。

X    Y   Time   Points
-10  2   10:30  4
-10  2   11:00  10
4    -10 10:30  6
4    -10 11:00  8

data次に、変数が「ポイント」列から取得された一連の等高線​​マップを生成できます。データをスライスして集計する便利な方法 (座標や時間でグループ化するなど) については、 pandasライブラリを参照することをお勧めします。

別の可能性は、ここで説明されている手法を使用することです。

于 2013-03-16T17:19:44.180 に答える
0

ドキュメントが示唆するようmatplotlib.pyplot.contourfに、 data パラメータの詳細については の説明を読んでみてください。ネットから地理データを読み込んでいるため、コードは複雑に見えます。大陸と海と子午線の両方を描きます。

Basemap の使用法には少し慣れていませんが、コア関数呼び出し (ページの例を参照) は次のとおりです。

# create the map, i.e. the plot surface as a map projection given
# the type of projection you need and the point you want as center of the map
map = Basemap(projection='ortho', lat_0=45, lon_0=-100, resolution='l')

# draw the continents lines
map.drawcountries(linewidth=0.25)

# draw the contour plot
cs = map.contour(x, y, data, 15, linewidths=1.5)

それよりもはるかに簡単なことはないと思います。より詳細な解決策が必要な場合は、問題の詳細、使用しているデータ構造、および試したコードを共有してください。

于 2013-03-16T12:24:19.460 に答える