2012-02-16 8 views
3

MatPlotLibとPythonを使用して、私はx軸とy軸の評価でコストがかかるラップトップの散布図を作っています。データはタブで区切られたファイルに保存されるようになりました。MatPlotLibで作成された散布図で、異なる色の異なる色を割り当てるにはどうすればよいですか?

このリンクは、MatPlotLib散布図を説明しています。 http://matplotlib.sourceforge.net/examples/api/unicode_minus.html

各ノートパソコンのブランドはLenova、HP、またはDellです。私は各ブランドのラップトップを表すドットに異なる色を割り当てたいと思う。たとえば、Dellノートパソコンには青い点が、Lenovaノートには赤い点が表示されます。

どうすればいいですか?

+2

おそらく、3つのグループを持ち、 'scatter() 'を3回呼び出すのが最善の方法でしょう。 [pandas](http://pandas.pydata.org/)はこれを簡単にします。 –

答えて

4

あなたの良い例はscatter plot exampleです。あなたのケースでは

は、close配列の代わりに、あなたは'r'の1、'g'、または'b'ている文字列の一部の配列をしたいです。したがって、ブランドの配列を読むことができれば、その文字の配列に変換することができます。 (そして、私はあなたが円異なるサイズを作るvolume配列、同等のものを望んでいないと思います。)

あなたが次に

brandcolors = [brand[i].replace('HP','g').replace('Lenovo','r').replace('Dell','b') for i in range(len(brand))] 

、プロットのようなものと色にあなたのbrand配列を翻訳できこの関数は

伝説少しトリッキー取得を追加
scatter(cost, rating, c=brandcolors) 

ようになります。 matplotlib docsは何かを作成するプロキシアーティストを使用することを提案しますが、プロットには載せません。たとえば、次の

それは関係なく、ドット形状の長方形で出てくるので、少し醜いです
pr = Rectangle((0, 0), 1, 1, fc='r') 
pg = Rectangle((0, 0), 1, 1, fc='g') 
pb = Rectangle((0, 0), 1, 1, fc='b') 
legend([pr, pg, pb], ['Lenovo', 'HP', 'Dell']) 

。もう1つの可能性のあるハックは、実際には1つのドットをプロットすることですが、プロット領域から離れていることを確認してください。

plot([-100], 'ro', label='Lenovo') 
... 
ax.set_ylim(bottom=0) 
legend() 
+0

友だちに感謝!それはうまくいった。 – dangerChihuahua007

+0

...この場合、凡例を追加する方法はありますか?これは手動でブランド名を置き換えるので、凡例を自動的に生成することはできません。 – dangerChihuahua007

+1

回答を編集しました。もう1つの方法は、 - [この例では - ]と言うように、複数の呼び出しを行うだけです(http://en.wikipedia.org/wiki/File%3AWeight_Growth_of_RN_First_Rate_Line-of-Battle_Ships_1630-1875.svg ) – Mike

関連する問題