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

时间:2020-05-26 20:19:46

标签: python-3.x range plotly axes

我有一个非常简单的气泡图,请参见下文。我唯一需要做的就是能够获取范围(或最小值和最大值)或生成的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左右,但是我需要一种方法来生成轴范围的精确值。

enter image description here

是否可以访问生成的轴范围?

3 个答案:

答案 0 :(得分:8)

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

因此,如果您尝试print(fig.layout.xaxis.range),将会得到None

如果需要限制,则需要制作自己的限制并将其应用于布局:

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

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

这让我很烦恼,所以我不得不更深入地研究credit goes to @Emmanuelle on the plotly forums,以确认这一现实。

答案 1 :(得分: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

答案 2 :(得分:0)

有一种方法可以访问您的无花果上的 X axis,甚至可以在 zooming 之后访问

您必须将无花果输出到 html 并且会有一个名为 xtick 的类 enter image description here

那些在 xtick 下未格式化的数据代表 x-axes of your fig

您可以使用美丽的汤或搜索来缩放 html 以获得它