pythonplotly

Get color from category in Plotly Coordinates Plot


I have a dataframe that looks like this: enter image description here

I want to crate a Coordinates Plot:

fig = px.parallel_coordinates(newdf, 
                          color="Type_enc", 
                          dimensions=["Attack","Defense","HP","Sp.Attack","Sp.Defense","Speed"],
                         color_continuous_scale=[[0, 'green'], [1, 'red']],
                         color_continuous_midpoint=0.5,
                         title ="Pokemon Stats by Type")
fig.show()

And the result looks like this: enter image description here

How do I change to legend to a discrete scale? So that instead of the encoded number, I just get "Fire" and "Water"? I tried changing

color="Type"

but this results in an error

Invalid element(s) received for the 'color' property of parcoords.line
    Invalid elements include: ['FIRE', 'FIRE', 'FIRE', 'FIRE', 'FIRE', 'WATER', 'WATER', 'WATER', 'WATER', 'FIRE']

Thank you!


Solution

  • Following the comments, that should do the trick:

    fig = px.parallel_coordinates(newdf, 
                              color="Type_enc", 
                              dimensions=["Attack","Defense","HP","Sp.Attack","Sp.Defense","Speed"],
                              color_continuous_scale=[(0.0, "green"), (0.5, "green"), 
                                                     (0.5, "red"), (1.0, "red")],
                              title ="Pokemon Stats by Type")
    
    fig.update_layout(coloraxis_colorbar=dict(
        title="Type",
        tickvals=[0,1],
        ticktext=["Water","Fire"], # You might want to change the order here!
        ))
    
    fig.show()