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

Ste*_*den 13 axes range python-3.x plotly

我有一个非常简单的气泡图,见下文。我唯一需要的是能够获得范围(或最小值和最大值)或生成的 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)
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

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

jay*_*sea 16

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

所以如果你尝试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确认了这一现实。

更新 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)
Run Code Online (Sandbox Code Playgroud)