Vader
Vader

Reputation: 6716

Change line color in Plotly

How do I set the color of a line in Plotly?

import plotly.graph_objects as go
from plotly.subplots import make_subplots

fig = make_subplots(rows=2, cols=1, subplot_titles=('Plot 1', 'Plot 2'))

# plot the first line of the first plot
fig.append_trace(go.Scatter(x=self.x_axis_pd, y=self.y_1, mode='lines+markers', name='line#1'), row=1, col=1)  # this line should be #ffe476

I tried fillcolor, but I suspect that doesn't work because this is a simple line.

Upvotes: 64

Views: 128697

Answers (5)

Titouan Quintin
Titouan Quintin

Reputation: 21

You can use color_discrete_sequence like that

import plotly.express as px
df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada',color_discrete_sequence=["#ff97ff"])
fig.show()

Upvotes: 2

vestland
vestland

Reputation: 61104

@nicolaskruchten is of course right, but I'd like to throw in two other options:

line_color="#0000ff"

And:

 fig['data'][0]['line']['color']="#00ff00"

Or:

 fig.data[0].line.color = "#00ff00"

I particularly appreciate the flexibility of the latter option since it easily lets you set a new color for a desired line after you've built a figure using for example fig.append_trace(go.Scatter()) or fig = go.Figure(data=go.Scatter)). Below is an example using all three options.

Code 1:

import plotly.graph_objects as go
import numpy as np

t = np.linspace(0, 10, 100)
y = np.cos(t)
y2= np.sin(t)
fig = go.Figure(data=go.Scatter(x=t, y=y,mode='lines+markers', line_color='#ffe476'))
fig.add_trace(go.Scatter(x=t, y=y2,mode='lines+markers', line=dict(color="#0000ff")))
fig.show()

Plot 1:

enter image description here

Now you can change the colors directly if you insert the snippet below in a new cell and run it.

Code 2:

fig['data'][0]['line']['color']="#00ff00"
fig.show()

Plot 2:

enter image description here

Upvotes: 55

Miladiouss
Miladiouss

Reputation: 4700

fig.data[0].line.color = 'rgb(204, 20, 204)'

Upvotes: 3

yu jiang
yu jiang

Reputation: 79

fig.add_trace(
                go.Scatter(
                    x=list(dict_val['yolo_timecost'].keys()),
                    y=signal.savgol_filter(list(dict_val['yolo_timecost'].values()),2653,3),
                    mode='lines',
                    name='YOLOv3实时耗时',
                    line=dict(
                        color='rgb(204, 204, 204)',
                        width=5
                    ),
                    ),
                )

Upvotes: 5

nicolaskruchten
nicolaskruchten

Reputation: 27370

You can add line=dict(color="#ffe476") inside your go.Scatter(...) call. Documentation here: https://plot.ly/python/reference/#scatter-line-color

Upvotes: 70

Related Questions