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'
如何解决这个问题?
答案 0 :(得分:1)
尝试markers=['*', 'o']
。
markers
中的lmplot()
参数要求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:标记必须是singeton或色调变量的每个级别的标记列表
如果这是导入(相当深奥的)cycler
模块的唯一用例,那么最好不要将其删除,只需定义要绑定到z
列的标记即可
对于您发布的实际错误,请注意markers
中的每个元素都是dict
。有一个marker
字段可以获得实际的marker
字符。您可以通过以下方式看到:
for m in markers:
print(m['marker'])