2017-04-25 6 views
0

私はmatplotlibにはかなり新しく、出力としてプロットと0〜1の範囲のスケールを作成したいと思っていました。マーカーはスケールと同じ色で表示されます。私はcolorbarメソッドで散布図を作成しましたが、カラーバーを描画する別のimshowを指定しなければなりませんでした。問題は、マーカーの同じ色を0から0.5の四角形にして、試してみた後に、それを誤って管理することができなかったことです(カラーバー/縮尺を間違えることなく)。matplotlib散布図の問題+サブプロット1つのみの値

非常に助かりました!

import matplotlib.pyplot as plt 
import matplotlib.cm as cm 

data =[0,0.7] 
for l in data:   
    cmap1 = cm.RdYlBu_r(l) 
    fig = plt.figure(dpi=300) 
    ax = fig.add_subplot(1,1,1) 
    ax.grid() 

    sc = plt.scatter(0, l, s=500, color= cmap1) 
    cax = ax.imshow([[l]],vmin=0, vmax=1, interpolation='nearest',aspect=5, cmap= plt.cm.RdYlBu_r) 

    plt.yticks([0,0.5, 1]) 
    plt.xticks([]) 

    plt.colorbar(cax) 
    axes = plt.gca() 
    plt.show 

これは、生成された画像です:
returning image

編集:私はすでに「matplotlibのカラーバー散布のための」とすべてのバリエーションで検索しかし、そのような例外TypeError「としてそれを適用するときにエラーを持っていた:あなたがしなければなりませんmappableの最初のset_arrayです。私は、一度にマップする価値が1つしかないという事実によると思います。申し訳ありませんが、それはそうでない場合;私はmatplotlibで新しく、私は少しsoemthingをしたいと理解しています。

+1

あなたは結果のプロットは、どのように見えるべきかを指定することはできますか?あなたは2つのデータポイント '[0、0.7]'を持っています。各データポイントのプロットと各プロットの1つのマーカーと同じことを示すカラーバーが必要ですか? – elcombato

+1

[matplotlib colorbar for scatter]の可能な複製(0120)を参照してください。 –

+0

実際に私の考えは、各データポイントのカラーバーで1つのプロットを作成することでした。生成された画像で、オレンジ色の四角形がない画像(データポイントに応じて変わります)。 –

答えて

1

色の付いた四角形は、imshowプロットから得られます。その矩形が欲しくないので、imshowプロットを削除してください。

次のステップは、カラーバーを取得することです。 plt.colorbarは、最初の引数としてScalarMappableが必要です。したがって、散布図を引数として提供することをお勧めします。 plt.colorbar(sc)

この時点では、おそらく「最初に設定可能なマップ可能です」と表示されます。散布図(plt.scatter(0, l, s=500, color= cmap1))を見ると、単一色はcolor引数で定義されているので、マッピングが適用されていないことがわかります。有用なScalarMappableになるためには、マッピング可能な配列を定義する必要がありますc引数を使用して色。だからではなく、手動でマッピングを行うためのあなたがcmap1 = cm.RdYlBu_r(l)で実行しようとして、あなたは散布図にそのステップを残す必要があります。

sc = plt.scatter(0, l, s=500, c=l, vmin=0, vmax=1,cmap= plt.cm.RdYlBu_r) 

は今、プロットは動作しますが、あなたので、悪いに見えますアスペクト、制限図形サイズなどの設定を適用したい場合があります。

合計で、次のようなものになります。

import matplotlib.pyplot as plt 

data =[0,0.4,0.7,0.9] 
for l in data:   
    fig = plt.figure(figsize=(2,3), dpi=100) 
    ax = fig.add_subplot(1,1,1, aspect=10) 
    ax.grid() 

    sc = plt.scatter(0, l, s=500, c=l, vmin=0, vmax=1,cmap= plt.cm.RdYlBu_r) 

    plt.xlim([-1,1]) 
    plt.ylim([0,1]) 
    plt.yticks([0,0.5, 1]) 
    plt.xticks([]) 

    plt.colorbar(sc) 
    plt.subplots_adjust(right=0.7) 
    plt.show() 

enter image description here

+0

ゴールド 'matplotlib'バッジでおめでとう! :-) – MaxU

+0

ありがとうございました。その答えは、特にその説明は大きな助けとなりました。 –

関連する問題