Is it possible to add an opacity to a color if you’re using a css color? Tried doing this
self.fig = go.Figure(data=[go.Sankey(
node=dict(
pad=15,
thickness=20,
line=dict(color="black", width=0.5),
label=self.label,
color=self.colors['node']
),
link=dict(
source=self.source,
target=self.target,
value=self.value,
color=[[color, .7] for color in self.colors['link']] # self.colors is a list of css colors
))])
but it doesn’t work and there’s no way to set an opacity flag. Any help would be appreicated.
Hi, and welcome to the community forum!
In order to modify the opacity of the color of a link in a Sankey figure, you need to pass a list of rgba
colors to the figure’s link.color
attribute, as demonstrated in the example at https://plotly.com/python/sankey-diagram/#more-complex-sankey-diagram-with-colored-links.
It looks like you’re on the right track but the list comprehension you perform ([color, .7] for color in self.colors['link']
) does not result in a list that is in the format that the plotly.py API expects.
If you can share the result of the list comprehension it would be helpful in further debugging your issue.
Hope that helps!
Output looks like this:
[['seagreen', 0.7], ['darkgrey', 0.7], ['steelblue', 0.7], ['navy', 0.7], ['darkturquoise', 0.7]]
Is there an easy way to translate the css color to rgba?
To translate css color names to rgba programmatically, you can use the matplotlib.colors
module, which has a function called to_rgba()
which accepts a named color and returns an rgba value.
This is documented at https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.colors.to_rgba.html.