[解決済み] Pythonによる散布図とカラーマッピング
質問
私はnumpyの配列に格納された点xとyの範囲を持っています。 これらは、t=0...T-1におけるx(t)とy(t)を表しています。
を用いて散布図を描画しています。
import matplotlib.pyplot as plt
plt.scatter(x,y)
plt.show()
時間を表すカラーマップを持ちたい(そのため、numpy配列のインデックスに応じてポイントに色をつける)。
これを行うための最も簡単な方法は何ですか?
どのように解決するのですか?
以下はその例です。
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
t = np.arange(100)
plt.scatter(x, y, c=t)
plt.show()
ここでは、インデックスを元に色を設定しています。
t
の配列である
[1, 2, ..., 100]
.
おそらく、より理解しやすい例として、もう少し単純な
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
plt.scatter(x, y, c=t)
plt.show()
<イグ
として渡す配列は
c
として渡す配列は、特定の順序や型である必要はありません。つまり、これらの例のようにソートや整数である必要はありません。 プロットルーチンは、カラーマップのスケールを
c
の最小/最大値がカラーマップの底/頂点に対応するようにスケールします。
カラーマップ
カラーマップを変更するには
import matplotlib.cm as cm
plt.scatter(x, y, c=t, cmap=cm.cmap_name)
インポート
matplotlib.cm
としてカラーマップを呼び出すことができるため、オプションとなります。
cmap="cmap_name"
と同じように呼び出すことができるからです。 そこには
参照ページ
に、それぞれのカラーマップがどのようなものかを示す参考ページがあります。 また、カラーマップを反転させるには、単に
cmap_name_r
. つまり
plt.scatter(x, y, c=t, cmap=cm.cmap_name_r)
# or
plt.scatter(x, y, c=t, cmap="cmap_name_r")
が動作します。 例としては
"jet_r"
または
cm.plasma_r
. 新しい1.5カラーマップviridisを使った例です。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(100)
y = x
t = x
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.scatter(x, y, c=t, cmap='viridis')
ax2.scatter(x, y, c=t, cmap='viridis_r')
plt.show()
カラーバー
カラーバーを追加するには
plt.scatter(x, y, c=t, cmap='viridis')
plt.colorbar()
plt.show()
なお、図やサブプロットを明示的に使用する場合(例えば
fig, ax = plt.subplots()
または
ax = fig.add_subplot(111)
など)、カラーバーを追加するのはもう少し複雑です。良い例があります
ここで、単一のサブプロットカラーバーについて
と
2つのサブプロット、1つのカラーバーの場合はこちら
.
関連
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] Matplotlib で凡例をプロットの外側に配置する方法
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】すべてのサブプロットに1つのカラーバーを表示させる方法
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Django filter queryset __in for *every* item in list
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例