Я думаю, что проблема здесь в два раза, во-первых, ваш 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)
Надеюсь, это сработает.