我认为这里的问题有两个方面,首先你的PriceLevel是一个整数,因此绘图使用它作为一个刻度,这就是为什么你指定showscale=False。如果你把它改成showscale=True,你会得到一个分类的图例,但它是一个刻度,你需要点数。在
这是第二部分;如果你想把它们显示为单独的刻度,你必须把它们设置成单独的记录道。在
例如# Set up a trace for each level of PriceLevel
trace1 = go.Scatter(
x=x_pca_df.query(" PriceLevel==1")['Principle'],
y=x_pca_df.query(" PriceLevel==1")['Second'],
# Add a name for each trace to appear in the legend
name = 'PriceLevel 1',
mode='markers',
marker=dict(color='rgba(152, 0, 0, .8)', size=4, showscale=False))
trace2 = go.Scatter(
x=x_pca_df.query(" PriceLevel==2")['Principle'],
y=x_pca_df.query(" PriceLevel==2")['Second'],
name = 'PriceLevel 2',
mode='markers',
marker=dict(color='rgba(255, 182, 193, .9)', size=4, showscale=False))
# Join them all together
data = [trace1, trace2]
layout = dict(
title='PCA Analysis',
xaxis=dict(title='First Principle Component'),
yaxis=dict(title='Second Principle Component'))
fig = dict(data=data, layout=layout)
iplot(fig)
希望这能奏效。在