2017-11-01 1 views
1
from cycler import cycler 
markers = cycler(marker=['*', 'o'] * 100) 

g = sns.lmplot(x='x', y='y', df, fit_reg=False, hue='z', lowess=True, scatter_kws={'alpha': 0.5}, legend=True, markers=markers) 

上記のコードでは、マーカーを循環させたいと思います。しかし、私はこのエラーが発生します:海底地帯のマーカー

TypeError: unhashable type: 'Cycler' 

これを修正するには?

答えて

1

try markers=['*', 'o']

lmplot()markers引数には、レベルごとに1つのエントリが必要です(hue)。あなたはこれをテストすることができます

N = 100 
data = {"x":np.random.random(N), 
     "y":np.random.random(N), 
     "z":np.random.choice([0,1], size=N)} 
df = pd.DataFrame(data) 

markers = [1,2,3] 

g = sns.lmplot(x='x', y='y', data=df, fit_reg=False, hue='z', lowess=True, 
       scatter_kws={'alpha': 0.5}, legend=True, markers=markers) 

は^これは、エラーがスローされます:

ValueError: markers must be a singeton or a list of markers for each level of the hue variable

を、これは(かなり難解な)cyclerモジュールをインポートするための唯一のユースケースがある場合、あなたはそれを残す方がいいでしょうz列にバインドしたいマーカーを定義するだけです。

投稿された実際のエラーについては、markersの各要素はdictであることに注意してください。実際の文字を取得するフィールドはです。あなたはこれを見ることができます:

for m in markers: 
    print(m['marker']) 
+0

ありがとう!だから私はあなたが説明するエラーを取得します。 '単にあなたのz列に結びつけたいマーカーを定義するだけではどういう意味ですか? ' – user308827

+0

'marker '引数を' markers = [' * '、' o '] 'に変更します。 –

+0

私は、私はまだそのエラーを取得しました。 – user308827

関連する問題