如何在 plotly plot 中获取生成的 x 轴和 y 轴范围?

新手上路,请多包涵

我有一个非常简单的气泡图,见下文。我唯一需要的是能够获得范围(或最小值和最大值)或生成的 x 轴和 y 轴。

 trace = go.Scatter(
    x=df_test['total_points_mean'],
    y=df_test['total_points_std'],
    mode='markers',
    text=df_test['play_maker'],
    marker=dict(size=df_test['week_nunique'],
                color = df_test['week_nunique'],
                showscale=True)
)

layout = go.Layout(title='Scatter Plot')
fig = go.Figure(data=[trace],layout=layout)

从结果图中,x 轴的最小值和最大值似乎在 ~10 和 ~29 左右,但我需要一种方法来生成轴范围的精确值。

在此处输入图像描述

有没有办法访问生成的轴范围?

原文由 Steven Cunden 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

在 python 实现中不可能从 plotly plot 获取轴范围。如果您在布局中指定轴范围,则只能检索范围(但实际上您不需要它)。

所以如果你尝试 print(fig.layout.xaxis.range) 你会得到 None

如果您需要限制,那么您需要自己制作并将其应用于布局:

  1. 获取 x 值的最小值和最大值: xmin , xmax
  2. 用一些因素填充这些值: xlim = [xmin*.95, xmax*1.05]
  3. 更新布局: fig.update_layout(xaxis=dict(range=[xlim[0],xlim[1]]))

现在,如果您尝试 print(fig.layout.xaxis.range) ,您将获得轴范围。

这让我很烦恼,所以我不得不更深入地挖掘, 感谢@Emmanuelle 在 plotly 论坛 上确认了这一现实。

更新 20210129 :Plotly 添加了 .full_figure_for_development() 方法。

.full_figure_for_development() 方法提供对 Plotly.js 计算的默认值的 Python 级访问。该方法需要Kaleido包,安装简单,也可用于静态图片导出。

所以现在你可以:

 full_fig = fig.full_figure_for_development()
print(full_fig.layout.xaxis.range)

原文由 jayveesea 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您无权访问输入数据,但可以访问跟踪:

 x_min = min(trace.x)
x_max = max(trace.x)

如果您无法访问跟踪但无法访问图形句柄,则以下应该有效(我认为这是通常的情况):

 x_mins = []
x_maxs = []
for trace_data in fig.data:
    x_mins.append(min(trace_data.x))
    x_maxs.append(max(trace_data.x))
x_min = min(x_mins)
x_max = max(x_maxs)

我假设 fig.layout.xaxis.rangeNone 如果轴范围是自动的。

原文由 CodePrinz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进