plotly / plotly.py

The interactive graphing library for Python :sparkles: This project now includes Plotly Express!
https://plotly.com/python/
MIT License
16.16k stars 2.54k forks source link

textfont color ignored in Sankey diagram #2741

Open ttusar opened 4 years ago

ttusar commented 4 years ago

When specifying textfont in a Sankey diagram like this: textfont=dict(color="blue", size=50) the color is ignored, while size works correctly.

A MWE with two figures. The first one has black nodes and (tiny) text, which is correct.

fig_black = go.Figure(data=[
    go.Sankey(
        node=dict(
            pad=15,
            thickness=20,
            line=dict(color="black", width=0.5),
            label=["A1", "A2", "B1", "B2", "C1", "C2"],
            color="black"
        ),
        link=dict(
            source=[0, 1, 0, 2, 3, 3],  # indices correspond to labels, eg A1, A2, A2, B1, ...
            target=[2, 3, 3, 4, 4, 5],
            value=[8, 4, 2, 8, 4, 2]
        ),
        textfont=dict(color="black", size=10)
    ),
])
fig_black.update_layout(title_text="Black")
fig_black.show()
Screenshot 2020-09-02 at 02 49 36

The second one has blue nodes, which is correct, but the text is black when it should be blue.

fig_blue = go.Figure(data=[
    go.Sankey(
        node=dict(
            pad=15,
            thickness=20,
            line=dict(color="blue", width=0.5),
            label=["A1", "A2", "B1", "B2", "C1", "C2"],
            color="blue"
        ),
        link=dict(
            source=[0, 1, 0, 2, 3, 3],  # indices correspond to labels, eg A1, A2, A2, B1, ...
            target=[2, 3, 3, 4, 4, 5],
            value=[8, 4, 2, 8, 4, 2]
        ),
        textfont=dict(color="blue", size=50)
    ),
])
fig_blue.update_layout(title_text="Blue")
fig_blue.show()
Screenshot 2020-09-02 at 02 50 42

I'm using plotly version 4.9.0.

Is the color specification above wrong or is this a bug?

bpostlethwaite commented 3 years ago

@nicolaskruchten @wbrgss I'm seeing the same thing with Dash Design Kit

Here is a graph with a theme applied that looks OK image

Here is the Sankey: image

For good measure I tried forcibly setting the textfont_color like this:

    fig = fig.update_traces(textfont_color=theme["text"], selector=dict(type='sankey'))

But as reported by @ttusar it seems to have no effect.