2016-08-31 2 views
1

私はしばしば多くの問題を持つデータフレームを持ち、ラインプロットを使ってデータをすばやく見たいと思っています。パンダのデータフレームラインプロット:ランダムなマーカーを表示

問題は、カラーマップの色がX個の観測値にわたって繰り返されるか、例えば、連続したカラーマップの場合

私の考えは、私が立ち往生したラインプロットにランダムなマーカーを追加することでした。

# -*- coding: utf-8 -*- 
import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

# dataframe with random data 
df = pd.DataFrame(np.random.rand(10, 8)) 

# plot 
df.plot(kind='line', marker='d') 
plt.show() 

提供:それは各行の(ランダム)マーカーを描画することも可能

enter image description here

です

は、ここに1つmarkerstyleとの例ですか?

ありがとうございます!

+0

感謝を。パンダラインプロットに複数のマーカーを追加するにはどうすればよいですか?私はリストマーカー= ['d'、 'x'、...]を渡そうとしましたが、うまくいきませんでした。マーカーを追加する方法を知っていたら、あなたのアプローチを使用できます。リストの理解と一緒に。 –

+0

マーカーを凡例に表示するか、プロット上に表示する必要がありますか? –

+0

凡例にも。 –

答えて

1

まず、ランダムマーカーを選択する必要があります。利用可能なすべてのマーカーを含むmatplotlib.markers.MarkerStyle.markers辞書を介して行うことができます。また、マーカは「ダニ」で始まる「何もない」を意味し、「キャレット」はドロップしなければならない。さらにinformationアバールマーカー。我々はデータフレームをプロットするために必要とするか、またはあなたがfilled_markersで2番目のオプションを使用することができますどのように多くの彼らから選ぶのが有効なマーカーでリストを作ってみましょう、その後ランダム:

import matplotlib as mpl 
import numpy as np 

# create valid markers from mpl.markers 
valid_markers = ([item[0] for item in mpl.markers.MarkerStyle.markers.items() if 
item[1] is not 'nothing' and not item[1].startswith('tick') 
and not item[1].startswith('caret')]) 

# use fillable markers 
# valid_markers = mpl.markers.MarkerStyle.filled_markers 

markers = np.random.choice(valid_markers, df.shape[1], replace=False) 

例えば:

In [146]: list(markers) 
Out[146]: ['H', '^', 'v', 's', '3', '.', '1', '_'] 

次に、あなたは可能性がマーカーのためにデータフレームをプロットし、set_markerメソッドを使用して各行のマーカーを設定します。次に、あなたのプロットに凡例を追加することができます。

import pandas as pd 

np.random.seed(2016) 
df = pd.DataFrame(np.random.rand(10, 8)) 

ax = df.plot(kind='line') 
for i, line in enumerate(ax.get_lines()): 
    line.set_marker(markers[i]) 

# for adding legend 
ax.legend(ax.get_lines(), df.columns, loc='best') 

オリジナル:

​​

更新:あなたの答えのための

enter image description here

+0

あなたの答えをありがとう!これがパンダに実装されていれば、 "random_markers = True"のようなフラグを使うことができるので、涼しいでしょう。しかし、これはすでに私を助けました。 –

+0

@CordKaldemeyerはい、それは機能リクエストの正当な理由です。 –

+1

完了:https://github.com/pydata/pandas/issues/14128もう一度お手数をおかけします。 –

関連する問題