Plotly:如何使用 Plotly Express 在单迹散点图中显示图例?
Plotly: How to show legend in single-trace scatterplot with plotly express?
很抱歉post。我是 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 plotly chart studio并手动添加图例,但即使我启用了它,它也不会在chart 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 图形对象的方法吗?
我看到的另一种解决方法是使用低级别绘图对象创建,但我不知道如何添加趋势线。
再次感谢您阅读所有这些内容。
您必须指定要显示图例并且提供如下图例名称:
fig['data'][0]['showlegend']=True
fig['data'][0]['name']='Sepal length'
剧情:
完整代码:
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()
完整代码:
很抱歉post。我是 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 plotly chart studio并手动添加图例,但即使我启用了它,它也不会在chart 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 图形对象的方法吗?
我看到的另一种解决方法是使用低级别绘图对象创建,但我不知道如何添加趋势线。
再次感谢您阅读所有这些内容。
您必须指定要显示图例并且提供如下图例名称:
fig['data'][0]['showlegend']=True
fig['data'][0]['name']='Sepal length'
剧情:
完整代码:
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()
完整代码: