[解決済み] matplotlibでランダムな色を生成するには?
2022-12-22 03:45:41
質問
プロット関数に渡すためにランダムな色を生成する方法の簡単な例は何ですか?
私はループの中でscatterを呼び出していて、それぞれのプロットに異なる色をつけたいと思っています。
for X,Y in data:
scatter(X, Y, c=??)
c: cは単一のカラーフォーマット文字列、長さNの色指定のシーケンス、またはkwargsで指定されたcmapとnormを使用して色にマッピングされるN個の数値のシーケンス(下記参照)であることが可能です。cは単一のRGBまたはRGBAの数値列であってはならないことに注意してください。なぜなら、それはカラーマップされる値の配列と区別がつかないからです。
どのように解決するのですか?
<ブロッククオートループ内でscatterを呼び出していて、それぞれのプロットを異なる色で表示したいのですが、どうすればよいでしょうか。
それに基づいて、そしてあなたの答えに基づいて。あなたが実際に欲しいのは
n
明確な
の色をデータセットに追加します。
を整数のインデックスに対応させたい場合
0, 1, ..., n-1
を個別のRGB色にマッピングしたい。
みたいな感じ。
以下はそのための関数です。
import matplotlib.pyplot as plt
def get_cmap(n, name='hsv'):
'''Returns a function that maps each index in 0, 1, ..., n-1 to a distinct
RGB color; the keyword argument name must be a standard mpl colormap name.'''
return plt.cm.get_cmap(name, n)
での使用法 疑似 -コードスニペットを質問で使用します。
cmap = get_cmap(len(data))
for i, (X, Y) in enumerate(data):
scatter(X, Y, c=cmap(i))
私は以下のコードで回答の図を生成しました。
import matplotlib.pyplot as plt
def get_cmap(n, name='hsv'):
'''Returns a function that maps each index in 0, 1, ..., n-1 to a distinct
RGB color; the keyword argument name must be a standard mpl colormap name.'''
return plt.cm.get_cmap(name, n)
def main():
N = 30
fig=plt.figure()
ax=fig.add_subplot(111)
plt.axis('scaled')
ax.set_xlim([ 0, N])
ax.set_ylim([-0.5, 0.5])
cmap = get_cmap(N)
for i in range(N):
rect = plt.Rectangle((i, -0.5), 1, 1, facecolor=cmap(i))
ax.add_artist(rect)
ax.set_yticks([])
plt.show()
if __name__=='__main__':
main()
Python 2.7 & matplotlib 1.5 と Python 3.5 & matplotlib 2.0 の両方でテストしています。期待通りに動作しています。
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】N個の「はっきりした」色を自動的に生成するには?
-
[解決済み] matplotlib で、図の中のそれぞれのプロットされた線に新しい色を選択するには?
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?