Plotly:如何在具有散点图表达的单迹线散点图中显示图例?

问题描述 投票:1回答:1

很抱歉,长篇文章。我是python和Plotly的新手,所以请多包涵。

我正在尝试使用趋势线绘制散点图,以向我显示包括回归参数的图例,但由于某些原因,我不明白为什么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绘图图表工作室并手动添加图例,但是即使启用了它,它也不会在图表工作室中显示。

我用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图形对象的方法吗?

我看到的另一种解决方法是使用低级可绘制图形对象创建,但随后我不知道如何添加趋势线。

再次感谢您阅读所有这些内容。

plotly data-visualization plotly-python plotly-express
1个回答
0
投票

您可以指定您要显示图例提供这样的图例名称:

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')
fig['data'][0]['showlegend']=True
fig['data'][0]['name']='Sepal length'
fig.show()

完整代码:

© www.soinside.com 2019 - 2024. All rights reserved.