「ヒートラインプロットの作成方法」

「ヒートラインプロットの作成方法を一挙公開!」

マルチ次元セグメント化された折れ線グラフの作成

あなたはおそらくヒートマップについて聞いたことがあります。2次元の色コード化されたグリッドで、通常3つのデータ次元を表すために使用できます。たとえば、以下のヒートマップは、月と年に基づいて南ロッキーズの平均気温を示しています。

A heat map showing the average temperature in the Southern Rockies from 1950 to 2020.. [CC BY-SA 4.0]

私は、いくつかの最近のマラソンを比較するために自分の走行ペースと心拍数(ゾーン)を各レースの42.2キロメートルにわたって見る必要があったため、ヒートマップのことを思い出しました。これにより、各1キロメートル間隔をx値とし、これらの間隔でのペースをy値として使用する折れ線グラフが私には適していると思われました。しかし、これらの間隔での努力の一つの尺度としての心拍数はどうでしょう?標準的なMatplotlib(私の選ぶグラフ描画ライブラリ)の折れ線グラフは、行の色、太さ、スタイルなどのプロパティを個別にエンコードする簡単な方法を提供していません。私の場合、レースの異なる部分で心拍数ゾーンを示すために色を使用したいと思いました。

これは比較的簡単に行うことができ、Matplotlibのデフォルトのビルトイン以外を見るべき時とその理由の有用な例です。基本的なアイデアは、折れ線グラフを構成する各線セグメントを別々にプロットすることです。これにより、各セグメントの視覚的プロパティを個別に制御することができます。例えば、この場合は線セグメントの色を心拍数として表現することができます。

これを行うために、MatplotlibのLineCollectionを使用します。これは、別々の色と幅で複数の線(または線セグメント)をプロットする便利な方法です。これを行うには、(x, y) のリストを各線セグメントの始点と終点の座標のリストに変換する必要があります。例えば、次の(x, y)のポイントが与えられた場合…

(x0, y0), (x1, y1), …, (xn, yn)

… 次のような線セグメントのリストを作成する必要があります:

[ [(x0, y0), (x1, y1)], [(x1, y1), (x2, y2)], …, [(xn-1, yn-1), (xn, yn)] ]

これは以下のコードの12~16行目の目的です。ただし、上記はこの説明のためにある程度単純化された表現です。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more