Plotly: Как отобразить легенду в однолинейной диаграмме рассеяния с помощью графика express - PullRequest
1 голос
/ 15 апреля 2020

Извините заранее за длинный пост. Я новичок в python и в заговоре, поэтому, пожалуйста, потерпите меня.

Я пытаюсь создать диаграмму рассеяния с линией тренда, чтобы показать мне легенду о графике, включая параметры регрессии, но для некоторых причина, по которой я не могу понять, почему px.scatter не показывает мне легенду моего следа. Вот мой код

fig1 = px.scatter(data_frame = dataframe,
             x="xdata",
             y="ydata",
             trendline = 'ols')

fig1.layout.showlegend = True
fig1.show()

Это отображает график рассеяния и линию тренда, но без легенды, даже когда я пытался переопределить его.

Я использовал pio.write_json(fig1, "fig1.plotly"), чтобы экспортировать его в диаграмму jupyterlab. Studio и добавьте легенду вручную, но даже если я включил ее, она не будет отображаться в диаграмме Studio.

Я напечатал переменную с print(fig1), чтобы увидеть, что происходит, это (часть) результат

(Scatter({
    'hovertemplate': '%co=%{x}<br>RPM=%{y}<extra></extra>',
    'legendgroup': '',
    'marker': {'color': '#636efa', 'symbol': 'circle'},
    'mode': 'markers',
    'name': '',
    'showlegend': False,
    'x': array([*** some x data ***]),
    'xaxis': 'x',
    'y': array([*** some y data ***]),
    'yaxis': 'y'
}), Scatter({
    'hovertemplate': ('<b>OLS trendline</b><br>RPM = ' ... ' <b>(trend)</b><extra></extra>'),
    'legendgroup': '',
    'marker': {'color': '#636efa', 'symbol': 'circle'},
    'mode': 'lines',
    'name': '',
    'showlegend': False,
    'x': array([*** some x data ***]),
    'xaxis': 'x',
    'y': array([ *** some y data ***]),
    'yaxis': 'y'
}))

Как мы видим, создание фигуры с px.scatter по умолчанию скрывает легенду при наличии единственного следа (я экспериментировал с добавлением свойства color к px.scatter, и он показал Легенда) и при поиске в документации px.scatter я не могу найти что-то, связанное с переопределением параметра легенды.

Я вернулся к экспортированному файлу (fig1.plotly. json) и вручную изменил showlegend записей в True, и тогда я смог увидеть легенду в диаграммной студии, но должен быть какой-то способ сделать это непосредственно из команды.

Вот вопрос: кто-нибудь знает способ настроить объекты px. express graphi c?

Другой обходной путь, который я вижу, - это использовать создание объектов низкоуровневого графического графика, но тогда я не знаю, как добавить линию тренда.

Еще раз спасибо за прочтение всего этого.

1 Ответ

0 голосов
/ 20 апреля 2020

Вы должны указать, что хотите отображать легенду и укажите название легенды, например:

fig['data'][0]['showlegend']=True
fig['data'][0]['name']='Sepal length'

Сюжет:

enter image description here

Полный код:

import plotly.express as px
df = px.data.iris() # iris is a pandas DataFrame
fig = px.scatter(df, x="sepal_width", y="sepal_length",
                 trendline='ols',
                 trendline_color_override='red')
fig['data'][0]['showlegend']=True
fig['data'][0]['name']='Sepal length'
fig.show()

Полный код:

...