Python散布図:カラーサイクルと同じ色のカラーマップを使用する方法

ジオ

散布図でクラスターに色を付けようとしていますが、2つの異なる方法で管理しました。

最初に各クラスターを繰り返しプロットし、2番目にすべてのデータを一度にプロットし、ラベル[0、1、2、3、4]に従ってクラスターに色を付けます。

私は私が得る結果に満足しているexample1し、example3代わりに繰り返し、各クラスタをプロットのラベルに応じてクラスタを着色する際着色はそう劇的に変化する理由を私は理解していません。

さらに、example1とexample3で2番目のクラスター(常に「1」のラベルが付いているにもかかわらず)の色が異なるのはなぜですか?

import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight') #irrelevant here, but coherent with the examples=)

fig, ax = plt.subplots(figsize=(6,4))
for clust in range(kmeans.n_clusters):
    ax.scatter(X[kmeans.labels_==clust],Y[kmeans.labels_==clust])
    ax.set_title("example1")`

example1

そして

plt.figure(figsize = (6, 4))
plt.scatter(X,Y,c=kmeans.labels_.astype(float))
plt.title("example2")

example2

(2番目の方法のカラーマップを明示的に定義できることはわかっていますが、例1の結果を再現するものは見つかりませんでした)

これが最小限の作業例です

import matplotlib.pyplot as plt
import pandas as pd
plt.style.use('fivethirtyeight') #irrelevant here, but coherent with the examples=)
X=pd.Series([1, 2, 3, 4, 5, 11, 12, 13, 14, 15])
Y=pd.Series([1,1,1,1,1,2,2,2,2,2])
clusters=pd.Series([0,0,0,0,0,1,1,1,1,1])


fig, ax = plt.subplots(figsize=(6,4))
for clust in range(2):
ax.scatter(X[clusters==clust],Y[clusters==clust])
ax.set_title("example3")

example3

plt.figure(figsize = (6, 4))
plt.scatter(X,Y, c=clusters)
plt.title("example4")

example4

ImportanceOfBeingErnest

クラスターをループしてscatter色を指定せずにプロットすると、アクティブなプロパティサイクラーのデフォルトの色(カラーサイクル)が使用されます。アクティブなプロパティサイクラーはで定義されていrcParamsます。使用中のスタイルを介して設定されます。あなたの場合、'fivethirtyeight'

print(plt.rcParams["axes.prop_cycle"])
> cycler('color', ['#008fd5', '#fc4f30', '#e5ae38', '#6d904f', '#8b8b8b', '#810f7c'])

これの最初の2色( '#008fd5'、 '#fc4f30')は、プロットに表示されている色です。

ascatterclusterscolor引数として使用する、これらの値はカラーマップを介して色にマップされます。カラーマップが指定されていない場合は、で定義されているデフォルトのカラーマップを使用しますrcParam

print(plt.rcParams["image.cmap"])
> "viridis"

The 'fivethirtyeight' style does not define any special colormap, so the default would be unchanged. (The fact that you observe a different colormap than viridis in your picture is due to the fact that there was some other code still active which is not shown in the question.)

At this point I need to start interpreting; I would think that your question really is how to get the single scatter use a colormap that has the same colors as the colorcycle in it. None of the predefined colormaps has the fivethirtyeight cycler colors in it. Hence you would define that colormap manually, by taking the colors from the cycle,

import matplotlib.colors as mcolors
cmap = mcolors.ListedColormap(plt.rcParams['axes.prop_cycle'].by_key()['color'])

Now you need a way to index the colormap, because you have discrete clusters.

n = len(clusters.unique())
norm = mcolors.BoundaryNorm(np.arange(n+1)-0.5, n)

もちろん、これには、カラーマップの色の数がクラスの数以上である必要があります。これがここに当てはまります。

すべてをまとめると(わかりやすくするために、別のカテゴリを追加しました)

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.colors as mcolors

plt.style.use('fivethirtyeight') #relevant here!!

X=pd.Series([1, 2, 3, 4, 5, 11, 12, 13, 14, 15])
Y=pd.Series([1,1,1,1,1,2,2,2,2,2])
clusters=pd.Series([0,0,0,0,0,1,1,1,1,2])

cmap = mcolors.ListedColormap(plt.rcParams['axes.prop_cycle'].by_key()['color'])
n = len(clusters.unique())
norm = mcolors.BoundaryNorm(np.arange(n+1)-0.5, n)

plt.figure(figsize = (6, 4))
sc = plt.scatter(X,Y, c=clusters, cmap=cmap, norm=norm)
plt.colorbar(sc, ticks=clusters.unique())
plt.title("example4")

plt.show()

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じラベルの異なる散布図マーカー

分類Dev

カラーマップと個々のアルファ値を使用した散布図

分類Dev

Pythonでマルチカラーの散布図を作成する

分類Dev

matplotlibのカラーサイクルをカラーマップとして使用する

分類Dev

パッチを使用して散布図の凡例マーカーの面の色をカスタマイズする

分類Dev

カラーサイクルにmatplotlibカラーマップを使用する

分類Dev

Python散布図。マーカーのサイズとスタイル

分類Dev

Python散布図。マーカーのサイズとスタイル

分類Dev

Matplotlib:同じ凡例の下に異なる散布図マーカーをグループ化する

分類Dev

グーグルチャートを使用して同じグラフに散布図と折れ線グラフをプロットする方法

分類Dev

ユーザー定義の色範囲と静的カラーマップを使用した2D色分け散布図

分類Dev

散布図のプロットマーカーにラベルを付ける方法(散布図ではありません)

分類Dev

ボケ散布図でのカラーマップの使用

分類Dev

散布図を取得c =?カラーマップと正規化

分類Dev

Pythonでの散布図とカラーマッピング

分類Dev

facecolors = 'none'を使用し、エッジカラーをデフォルトの決定論的マーカーカラー選択に維持する、Pyplot散布図

分類Dev

マーカーの1サイクルが完了した後に色が変更されるように、マーカーと色が循環する散布図を作成しようとしています

分類Dev

Pythonでプロット散布図(バブルチャート)の凡例マーカーサイズを変更する

分類Dev

matplotlibは、フレーム、軸のない図を作成し、カラーマップを使用して2D配列をプロットし、入力と同じサイズのnumpy配列にプロットを保存します。

分類Dev

Pythonでプロット散布図のバブルサイズをカスタマイズする

分類Dev

Pythonのカラーバーで色をマップする

分類Dev

散布図のすべてのクラスに異なるクラスターマーカーをプロットする

分類Dev

別のクラスのメソッドローカルインナークラスと同じ名前を持つクラスにアクセスする方法

分類Dev

Python matplotlib散布図インポートカラーマップリスト

分類Dev

連続値を使用して `matplotlib`散布図に色を付ける方法[` seaborn`カラーパレット?]

分類Dev

Rプロット散布図でマーカーの色を変更する問題

分類Dev

テーブルの行とマルチディスプロットに同じカラーマッピングを使用する

分類Dev

散布図を使用してカラーバーにすべての色を表示する

分類Dev

同じマップに2つのマーカーを追加する方法をフラッター

Related 関連記事

  1. 1

    同じラベルの異なる散布図マーカー

  2. 2

    カラーマップと個々のアルファ値を使用した散布図

  3. 3

    Pythonでマルチカラーの散布図を作成する

  4. 4

    matplotlibのカラーサイクルをカラーマップとして使用する

  5. 5

    パッチを使用して散布図の凡例マーカーの面の色をカスタマイズする

  6. 6

    カラーサイクルにmatplotlibカラーマップを使用する

  7. 7

    Python散布図。マーカーのサイズとスタイル

  8. 8

    Python散布図。マーカーのサイズとスタイル

  9. 9

    Matplotlib:同じ凡例の下に異なる散布図マーカーをグループ化する

  10. 10

    グーグルチャートを使用して同じグラフに散布図と折れ線グラフをプロットする方法

  11. 11

    ユーザー定義の色範囲と静的カラーマップを使用した2D色分け散布図

  12. 12

    散布図のプロットマーカーにラベルを付ける方法(散布図ではありません)

  13. 13

    ボケ散布図でのカラーマップの使用

  14. 14

    散布図を取得c =?カラーマップと正規化

  15. 15

    Pythonでの散布図とカラーマッピング

  16. 16

    facecolors = 'none'を使用し、エッジカラーをデフォルトの決定論的マーカーカラー選択に維持する、Pyplot散布図

  17. 17

    マーカーの1サイクルが完了した後に色が変更されるように、マーカーと色が循環する散布図を作成しようとしています

  18. 18

    Pythonでプロット散布図(バブルチャート)の凡例マーカーサイズを変更する

  19. 19

    matplotlibは、フレーム、軸のない図を作成し、カラーマップを使用して2D配列をプロットし、入力と同じサイズのnumpy配列にプロットを保存します。

  20. 20

    Pythonでプロット散布図のバブルサイズをカスタマイズする

  21. 21

    Pythonのカラーバーで色をマップする

  22. 22

    散布図のすべてのクラスに異なるクラスターマーカーをプロットする

  23. 23

    別のクラスのメソッドローカルインナークラスと同じ名前を持つクラスにアクセスする方法

  24. 24

    Python matplotlib散布図インポートカラーマップリスト

  25. 25

    連続値を使用して `matplotlib`散布図に色を付ける方法[` seaborn`カラーパレット?]

  26. 26

    Rプロット散布図でマーカーの色を変更する問題

  27. 27

    テーブルの行とマルチディスプロットに同じカラーマッピングを使用する

  28. 28

    散布図を使用してカラーバーにすべての色を表示する

  29. 29

    同じマップに2つのマーカーを追加する方法をフラッター

ホットタグ

アーカイブ