29

https://plotly.com/python/line-and-scatter/ has many scatter plot examples, but not a single one showing you how to set all the points' colours within px.scatter:

# x and y given as DataFrame columns
import plotly.express as px
df = px.data.iris() # iris is a pandas DataFrame
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()

I've tried adding colour = 'red' etc doesn't work. These examples only show you how to colour by some other variable.

In principle I could add another feature and set it all the same but that seems a bizzare way of accomplishing the task....

Trenton McKinney
  • 56,955
  • 33
  • 144
  • 158
RNs_Ghost
  • 1,687
  • 5
  • 25
  • 39

3 Answers3

21

For that you may use the color_discrete_sequence argument.

fig = px.scatter(df, x="sepal_width", y="sepal_length", color_discrete_sequence=['red'])

This argument is to use a custom color paletter for discrete color factors, but if you are not using any factor for color it will use the first element for all the points in the plot.

More about discrete color palletes: https://plotly.com/python/discrete-color/

Daniel R
  • 1,954
  • 1
  • 14
  • 21
6

As far as I understand your question, I would try to answer it.

The parameter 'color' only accepts the column names.
In your case, you can consider using update_traces()

import plotly.express as px
df = px.data.iris() # iris is a pandas DataFrame
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.update_traces(marker=dict(
        color='red'))
fig.show()

Reference: https://plotly.com/python/marker-style/

Shri Hari L
  • 4,551
  • 2
  • 6
  • 18
  • 1
    Thanks, but that same a truely insane system compared to other plotting packages (ggplot, matplotlib etc...) – RNs_Ghost Aug 14 '20 at 14:00
5

You do not have to add another feature to get what you want here. Thanks to Python's method chaining, you can just include .update_traces(marker=dict(color='red')) to manually assign any color of your choosing to all markers.

Plot:

enter image description here

Code:

# x and y given as DataFrame columns
import plotly.express as px
df = px.data.iris() # iris is a pandas DataFrame
fig = px.scatter(df,x="sepal_width",                         
                    y="sepal_length"
                 ).update_traces(marker=dict(color='red'))
fig.show()

vestland
  • 55,229
  • 37
  • 187
  • 305