matplotlibとseabornの異なるチャートで同じインデックスに同じ色を設定する方法

ネオ

パンダのデータフレームを2つのプロットにプロットしようとしています。1つはmatplotlibpyplotの円グラフで、もう1つは海で生まれた棒グラフです。各グラフで、データフレームを並べ替えましたが、異なる列に基づいています。また、各グラフは、データフレームが並べ替えられたそれぞれの値を表しています。したがって、2つのグラフでは行の順序が異なります。このように、データフレーム内の同じインデックス(またはカテゴリ)がチャート上で異なる色で表示されるため、混乱を招きます。異なるチャートに同じ色のインデックスを作成するには、これをどのように修正できますか?

私のコード:

df = pd.DataFrame({"Total":totals,"Infected": infected}, 
                   index=category).sort_values("Total", ascending=False)
fig, ax = plt.subplots(ncols=2, nrows=1,figsize=(20,8))

#creating a pie chart with conditional explode option
threshold = new_train.shape[0]*threshold

if explode==-1:
    ax[0].pie(df[df["Total"]>threshold]["Total"], 
              labels=df[df["Total"]>threshold].index.values, 
              autopct='%1.1f%%',shadow=False, startangle=rotation,  
              textprops={'fontsize': 15})
else:
    ax[0].pie(df[df["Total"]>threshold]["Total"], 
              labels=df[df["Total"]>threshold].index.values, 
              autopct='%1.1f%%',shadow=False, startangle=rotation, 
              textprops={'fontsize': 15}, explode=explode)
ax[0].axis('equal')
ax[0].set_title(col_name)

#created a sorted bar chart
newdf = df[df["Total"]>threshold]
newdf.sort_values("Infected", ascending=False, inplace=True)
ax[1].set_xticklabels(category,rotation=45, horizontalalignment='right')
ax[1].set_title('Infected fractions')
ax[1] = sns.barplot(x=newdf.index, y="Infected",data=newdf, 
order=newdf.index)#, orient='h')
plt.show()

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

たとえば、1.1.15200.1は円グラフでは青色ですが、棒グラフではオレンジ色です。

krm

使用しているラベルの値に適した色を検索する辞書を作成する必要があります。以下は、データに対して行っているすべてのことをうまくカバーしている簡略版です。

# a dataframe from a list of lists 
el = [['RED', 50, 1], 
      ['GREEN', 30, 2], 
      ['BLUE', 7, 3], 
      ['YELLOW', 3, 4], 
      ['ORANGE', 9, 5], 
      ['BLACK', 1, 6]]
df = pd.DataFrame(el)

# since you are not using the entire dataframe
df_thres = df[df[1] > 1]

# make a fixed length color map manually
c = ['red', 'green', 'blue', 'yellow', 'orange']
clist1 = {i:j for i, j in zip(df_thres[0].values, c)}

# make an arbitrary-length colormap
cm = plt.get_cmap('rainbow')
c = [cm(1.0 * i/len(df_thres)) for i in range(len(df_thres))]
clist2 = {i:j for i, j in zip(df_thres[0].values, c)}


fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(11, 8))

# manual colors

# PIE PLOT: sort on the third column
newdf = df_thres.sort_values(2, ascending=False)
ax[0, 0].pie(newdf[2], labels=newdf[0], colors=[clist1[i] for i in newdf[0].values])
ax[0, 0].axis('square') # matplotlib 2.x only

# BAR PLOT: sort on the second column    
newdf = df_thres.sort_values(1, ascending=False)
ax[0, 1].bar(newdf[0], newdf[1], color=[clist1[i] for i in newdf[0].values])

#----------------

# arbitrary-length generated colorlist
newdf = df_thres.sort_values(2, ascending=False)
ax[1, 0].pie(newdf[1], labels=newdf[0], colors=[clist2[i] for i in newdf[0].values])
ax[1, 0].axis('square') # matplotlib 2.x only

newdf = df_thres.sort_values(1, ascending=False)
ax[1, 1].bar(newdf[0], newdf[1], color=[clist2[i] for i in newdf[0].values])

これが私が得た出力です。下の行の色はラベルの付いた色ではありませんが、一貫しています。(また、ここでは両方のプロットにmatplotlibを使用していることに注意してください)

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

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

同じチャートの異なるプロットに異なる色を設定するにはどうすればよいですか?

分類Dev

同じfilebeatからlogstashまでのログごとに異なるインデックス名を設定する方法

分類Dev

matplotlibでの自動スケーリング、同じチャートに異なる時系列をプロット

分類Dev

同じクラス名の値を異なる色でスタイル設定する方法

分類Dev

.NETチャートクラス-同じチャートに異なる種類の間隔を表示する方法

分類Dev

同じScrapyスパイダーで異なるリクエストに異なる設定を設定することは可能ですか?

分類Dev

TensorflowとKerasの同じ(?)ニューラルネットワークアーキテクチャは、同じデータで異なる精度を生成します

分類Dev

同じプロジェクトのEclipseで異なるソースフォルダーに異なるコンパイラレベルを設定する

分類Dev

同じ要素に異なるツールチップと確認のタイトルを設定するにはどうすればよいですか?

分類Dev

IDが同じでインデックスが異なるテーブルのデータを更新する方法

分類Dev

チャートの同じバーに2つの異なる色を使用する方法はありますか?

分類Dev

Javaで同じ長さのBitSetがtrueに設定されているインデックスでのみint []をソートする方法

分類Dev

同じ列、行で同じ色を使用せずに、n個の異なる色でrxrフィールドをペイントする方法

分類Dev

アップストリームブランチをブランチと同じ名前に設定する方法

分類Dev

DHCPとフォールバックIP-同じネットワークインターフェイスに2つの異なる設定を設定できますか?

分類Dev

同じユーティリティスクリプトが異なるSCMディレクトリにチェックインされていても、どこでも同じである必要がある場合、それらが同じであることを確認するにはどうすればよいですか?

分類Dev

doxygenのメイン/インデックスページと同じレベルに2つのリンクを設定することは可能ですか?

分類Dev

異なるスパイダーに同じキャッシュフォルダーを設定する方法、scrapyは各スパイダーのキャッシュディレクトリにサブフォルダーを作成するようになりました

分類Dev

同じVBOに異なる頂点属性とインデックスを保存することは可能ですか?

分類Dev

エンコードの前後でピクセルの色が異なるのはなぜですか?、同じように設定する方法は?

分類Dev

C#異なるボタンのボタンテキストを同じテキストボックスに設定する方法

分類Dev

同じ位置としてphpで異なるインデックス配列を表示する方法

分類Dev

純粋なJavaScriptで同じインデックスを持つ異なる要素をターゲットにする方法

分類Dev

Hiveの異なる行内の配列で同じインデックスを持つ要素を合計する方法

分類Dev

Angularjs-2つの異なるリンクを同じページにリダイレクトするが、angularjsで異なるデータを表示する方法

分類Dev

同じ行で、コンソールのテキストの色と背景の色を異なる色に変更することはできますか? C++

分類Dev

Angular4の同じngFor内で2つの異なるインデックス変数を使用する方法

分類Dev

インデックスのタイトルをヘッダーと同じ行にする方法

分類Dev

タグをUIImageviewに設定する方法画像はiOSの各画像の配列インデックスと同じですか?

Related 関連記事

  1. 1

    同じチャートの異なるプロットに異なる色を設定するにはどうすればよいですか?

  2. 2

    同じfilebeatからlogstashまでのログごとに異なるインデックス名を設定する方法

  3. 3

    matplotlibでの自動スケーリング、同じチャートに異なる時系列をプロット

  4. 4

    同じクラス名の値を異なる色でスタイル設定する方法

  5. 5

    .NETチャートクラス-同じチャートに異なる種類の間隔を表示する方法

  6. 6

    同じScrapyスパイダーで異なるリクエストに異なる設定を設定することは可能ですか?

  7. 7

    TensorflowとKerasの同じ(?)ニューラルネットワークアーキテクチャは、同じデータで異なる精度を生成します

  8. 8

    同じプロジェクトのEclipseで異なるソースフォルダーに異なるコンパイラレベルを設定する

  9. 9

    同じ要素に異なるツールチップと確認のタイトルを設定するにはどうすればよいですか?

  10. 10

    IDが同じでインデックスが異なるテーブルのデータを更新する方法

  11. 11

    チャートの同じバーに2つの異なる色を使用する方法はありますか?

  12. 12

    Javaで同じ長さのBitSetがtrueに設定されているインデックスでのみint []をソートする方法

  13. 13

    同じ列、行で同じ色を使用せずに、n個の異なる色でrxrフィールドをペイントする方法

  14. 14

    アップストリームブランチをブランチと同じ名前に設定する方法

  15. 15

    DHCPとフォールバックIP-同じネットワークインターフェイスに2つの異なる設定を設定できますか?

  16. 16

    同じユーティリティスクリプトが異なるSCMディレクトリにチェックインされていても、どこでも同じである必要がある場合、それらが同じであることを確認するにはどうすればよいですか?

  17. 17

    doxygenのメイン/インデックスページと同じレベルに2つのリンクを設定することは可能ですか?

  18. 18

    異なるスパイダーに同じキャッシュフォルダーを設定する方法、scrapyは各スパイダーのキャッシュディレクトリにサブフォルダーを作成するようになりました

  19. 19

    同じVBOに異なる頂点属性とインデックスを保存することは可能ですか?

  20. 20

    エンコードの前後でピクセルの色が異なるのはなぜですか?、同じように設定する方法は?

  21. 21

    C#異なるボタンのボタンテキストを同じテキストボックスに設定する方法

  22. 22

    同じ位置としてphpで異なるインデックス配列を表示する方法

  23. 23

    純粋なJavaScriptで同じインデックスを持つ異なる要素をターゲットにする方法

  24. 24

    Hiveの異なる行内の配列で同じインデックスを持つ要素を合計する方法

  25. 25

    Angularjs-2つの異なるリンクを同じページにリダイレクトするが、angularjsで異なるデータを表示する方法

  26. 26

    同じ行で、コンソールのテキストの色と背景の色を異なる色に変更することはできますか? C++

  27. 27

    Angular4の同じngFor内で2つの異なるインデックス変数を使用する方法

  28. 28

    インデックスのタイトルをヘッダーと同じ行にする方法

  29. 29

    タグをUIImageviewに設定する方法画像はiOSの各画像の配列インデックスと同じですか?

ホットタグ

アーカイブ