2
votes

Is it possible using Plotly Dash to create line graphs in which the line colors are gradient (purely for aesthetics)?

I tried using something like:

'line': {'color': 'linear-gradient(90deg, red, red 60%, white)' }

Example of entire graph code in plotly dash:

dcc.Graph(
    id='MORTGAGE_RATES',
    figure={
        'data': [
             { "x": MORTGAGE30US['date'],"y": MORTGAGE30US['value'],"mode": "lines","name": '30 YR', 'line': {'color': 'linear-gradient(90deg, red, red 60%, white)' }},
             { "x": MORTGAGE15US['date'],"y": MORTGAGE15US['value'],"mode": "lines","name": '15 YR',},
        ],
        'layout': {
            'title': 'MORTGAGE RATES',
            "paper_bgcolor": "rgb(46, 54, 65)",
            "plot_bgcolor": "rgb(46, 54, 65)",
            'font': {
                'color': "rgb(255,255,255)"
            }
        }
    }
)
1
Do you mind to prodice a mcve? In particular a sample of your data?rpanai
Then in order to understand better: are you looking for a colormap for your line?rpanai
I just wanted my graph's lines to go from one color to the other - for example blue to green (gradually). Not looking for a color map, this is purely for aesthetics.mikelowry
so the color will depend on x rather than y?rpanai
yeah technicallymikelowry

1 Answers

4
votes

This feature is not yet available for 2D line plots, it is currently only available for 3D line plots, see https://github.com/plotly/plotly.js/issues/581. It is however possible to use a colorscale in a 2D plot if you use markers instead of lines, see the example below.

import plotly.graph_objects as go
import numpy as np

t = np.linspace(0, 10, 1000)
x, y = t, np.cos(t)

data = go.Scatter(x=x, y=y, mode='markers', marker={'color': x, 'colorscale': 'Rainbow', 'size': 10})

layout = dict(plot_bgcolor='white', margin=dict(t=0, b=0, r=0, l=0, pad=0),
              xaxis=dict(showgrid=False, zeroline=False, mirror=True, linecolor='gray'),
              yaxis=dict(showgrid=False, zeroline=False, mirror=True, linecolor='gray'))

fig = go.Figure(data=data, layout=layout)

fig.show()

enter image description here