Добавить легенды по цвету на графике Plotly scatter - PullRequest
0 голосов
/ 25 августа 2018
trace = go.Scatter(
x=x_pca_df['Principle'],
y=x_pca_df['Second'],
mode='markers',
marker=dict(color=home_data['PriceLevel'], size=4, showscale=False))

data = [trace]

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)

Я хочу, чтобы рядом с этим сюжетным графиком отображались легенды.Поэтому люди могут понять, что означает цвет очков.Я не могу найти правильное решение нигде.enter image description here

enter image description here

Ответы [ 3 ]

0 голосов
/ 26 августа 2018

Вам необходимо указать параметр name в вашем trace.Как я думаю, увидев сюжет, у вас есть четыре traces.Поэтому вам нужно выбрать name для каждого trace и выбрать то, что вы хотите видеть для каждого из них.

Код:

trace = go.Scatter(
x=x_pca_df['Principle'],
y=x_pca_df['Second'],
#Set parameter name to what you want to see in legend
name = 'PriceLevel',
mode='markers',
marker=dict(color=home_data['PriceLevel'], size=4, showscale=False))

data = [trace]

layout = dict(
title='PCA Analysis',
xaxis=dict(title='First Principle Component'),
# Do not forget specify showlegend as True
yaxis=dict(title='Second Principle Component'), showlegend = True)
fig = dict(data=data, layout=layout)
# Parameter filename just create a html file in your python script directory with name
iplot(fig, filename = 'show-legend')
0 голосов
/ 13 марта 2019

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

Надеюсь, это сработает.

0 голосов
/ 25 августа 2018

Я думаю, вам нужно указать параметр имени файла. Попробуйте это и дайте мне знать, если это работает.

trace = go.Scatter(
x=x_pca_df['Principle'],
y=x_pca_df['Second'],
mode='markers',
marker=dict(color=home_data['PriceLevel'], size=4, showscale=False))

data = [trace]

layout = dict(
title='PCA Analysis',
xaxis=dict(title='First Principle Component'),
yaxis=dict(title='Second Principle Component'), showlegend = True)
fig = dict(data=data, layout=layout)
iplot(fig, filename = 'show-legend')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...