2017-08-22 4 views
1

私はプロットを示す「tab20」カラーマップ:matplotlibのをCMAPのみを使用してのpythonのmatplotlibのグレー

colors=[str(float(year-1980)/(2017-1980)) for i in years]; 
fig,ax = plt.subplots()   
ax.scatter(Topic[:,0],Topic[:,1],c=colors,cmap='tab20') 

が、私が手にプロットが完全に灰色です。理由は何でしょうか?あなたはカラーフォーマット文字列としてそれらを治療するためのmatplotlibのを言っている、あなたのax.scatter呼び出しでcに文字列のリストを渡すことで、

enter image description here

答えて

1

。文字列はフロートを表すように見えるので、それらをグレースケール値として扱います。

colors = [float((year-1980)/(2017-1980)) for year in years]

は特に、詳細はthe docsを参照してください:あなたの代わりにfloatのリストを渡した場合、それは正確にカラーマップを使用する必要があります

cmap:カラーマップ、オプション、デフォルト:なし

Colormapインスタンスまたは登録された名前。 cmapは、cが 浮動小数点配列の場合にのみ使用されます。

(また、あなたが最初の行の後;を必要としません。)

+0

この回答は間違いなく正しいです。しかし、質問者は明らかにそれを理解していませんでした。たぶん、問題を解決するために必要なコード、 '' colors = [float(i-1980)/(2017-1980)for i]」を単に追加するだけです。 – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnestいいですよ、私は編集しました。 –

0

色を使用することによって解決しよう= [cm.RdYlBu(フロート(年 - 1980年)/(2017年から1980年))私は何年もの間、浮動小数点数を私が使用したいカラーマップに変換する必要があるので、 です。

+0

これはオプションですが、散布図がカラーマップに従って色を選択するのではなく、色を直接供給することによって、最初の問題を回避します。 – ImportanceOfBeingErnest

+0

それは本当です。最初の質問だけを直接的に行うことができるアイディアですか?それは大いに感謝します! –

+0

はい、上記のジョシュの答えが問題を解決します。 – ImportanceOfBeingErnest

関連する問題