Skip to content

Cannot increase distance between shape and its label outside of the object #4971

Open
@maximweb

Description

@maximweb

Challenge

I would like to draw a shape using the label argument to position the label outside of the shape. Unfortunately, the label always touches the shape and padding only works in one direction: towards the center of the shape.

Here is an example:

import plotly.graph_objects as go

fig = go.Figure()

for i in range(0, 4):
    fig.add_shape(
        go.layout.Shape(
            type="rect",
            x0=10,
            y0=10*i + 3,
            x1=15,
            y1=10*i + 10,
            label={
                "text": f"Padding: {i*10}px",
                "textposition": "middle right",
                "xanchor": "left",
                "yanchor": "middle",
                "padding": i*10,
            },
        )
    )

fig.update_layout(xaxis_range=[0, 20], yaxis_range=[0, 60])

fig.show()

Despite seting xanchor="left" and textposition="middle right", the label barely touches the shape (for padding=0) and with increasing padding the label always moves towards the center.

Image

Setting padding to a negative value seems not to be allowed:

ValueError: 
    Invalid value of type 'builtins.int' received for the 'padding' property of layout.shape.label
        Received value: -10

    The 'padding' property is a number and may be specified as:
      - An int or float in the interval [0, inf]

Expected Behavior

Either infer from anchor and textposition, if a label should be outside of the shape, or allow negative values for padding so that I can increase the distance between the rectangle and the label.

I could not find any other info regarding this observation and I would like to avoid using an annotation as a workaround.

Am I overlooking something or is this a bug?

System Info

python: v3.10.11
plotly: v5.24.1

Working in a VSCode (v1.96.2) notebook and tested multiple different renderers with identical outcome: "vscode", "notebook", "browser".
Same result with write_image and pdf and png.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3backlogfeaturesomething new

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions