Plotly:如何在 Plotly 中绘制具有渐变颜色的矩形?
Plotly: How to plot rectangle with gradient color in Plotly?
矩形等形状在 Plotly 中可以有平滑的颜色渐变吗?
我将填充颜色为纯色的形状定义为:
shapes=[dict(
type='rect',
xref='x',
yref='paper',
x0=box_from, x1=box_to,
y0=0, y1=1,
fillcolor='Green',
opacity=0.07,
layer='below',
line=dict(width=0),
)]
但我希望方框不是纯色填充,而是平滑的颜色渐变。
- 这是我正在关注的文档中的示例:
https://plotly.com/python/shapes/#highlighting-time-series-regions-with-rectangle-shapes
fillcolor
上的文档不是很全面:
https://plotly.com/python/reference/#layout-shapes-items-shape-fillcolor
- 我猜
colorscales
不适用于形状:
https://plotly.com/python/builtin-colorscales/
我猜答案很简单 "not supported",但也许其他人知道得更多。
如果我错了,有人会纠正我,但我认为不,没有直接的实现来填充形状的渐变。但要获得类似的结果,您可以在指定递减 rgb 值的矩形内绘制几条线。
例如,我在文档代码中的第一个矩形定义之后添加了这个 for 循环(还将矩形填充颜色更改为白色)。
for i in range(100):
fig.add_shape(type='line',
xref="x",
yref="y",
x0=2.5,
x1=3.5,
y0=i*(2/100),
y1=i*(2/100),
line=dict(
color='rgb({}, {}, {})'.format((i/100*255),(i/100*255),(i/100*255)),
width=3,
))
结果是:
我知道这是不切实际的,它可以增加一点 运行 时间,但如果你只关心美学,它就可以了。
看看 Edoardo Guerrieros 的出色建议,您也可以考虑使用 rgba(0,0,0,0)
,其中最后一个数字设置颜色的不透明度。这样你就会让背景逐渐出现在你的矩形后面:
完整代码:
import plotly.graph_objs as go
fig=go.Figure()
for i in range(100):
opac = 1-(i/100)
fig.add_shape(type='line',
xref="x",
yref="y",
x0=2.5,
x1=3.5,
y0=i*(2/100),
y1=i*(2/100),
line=dict(color='rgba({}, {}, {}, {})'.format((0),(0),(255),(opac)),
width=5,))
fig.update_xaxes(range=[2, 4])
fig.update_yaxes(range=[-1, 2.5])
fig.show()
矩形等形状在 Plotly 中可以有平滑的颜色渐变吗?
我将填充颜色为纯色的形状定义为:
shapes=[dict(
type='rect',
xref='x',
yref='paper',
x0=box_from, x1=box_to,
y0=0, y1=1,
fillcolor='Green',
opacity=0.07,
layer='below',
line=dict(width=0),
)]
但我希望方框不是纯色填充,而是平滑的颜色渐变。
- 这是我正在关注的文档中的示例:
https://plotly.com/python/shapes/#highlighting-time-series-regions-with-rectangle-shapes fillcolor
上的文档不是很全面:
https://plotly.com/python/reference/#layout-shapes-items-shape-fillcolor- 我猜
colorscales
不适用于形状:
https://plotly.com/python/builtin-colorscales/
我猜答案很简单 "not supported",但也许其他人知道得更多。
如果我错了,有人会纠正我,但我认为不,没有直接的实现来填充形状的渐变。但要获得类似的结果,您可以在指定递减 rgb 值的矩形内绘制几条线。
例如,我在文档代码中的第一个矩形定义之后添加了这个 for 循环(还将矩形填充颜色更改为白色)。
for i in range(100):
fig.add_shape(type='line',
xref="x",
yref="y",
x0=2.5,
x1=3.5,
y0=i*(2/100),
y1=i*(2/100),
line=dict(
color='rgb({}, {}, {})'.format((i/100*255),(i/100*255),(i/100*255)),
width=3,
))
结果是:
我知道这是不切实际的,它可以增加一点 运行 时间,但如果你只关心美学,它就可以了。
看看 Edoardo Guerrieros 的出色建议,您也可以考虑使用 rgba(0,0,0,0)
,其中最后一个数字设置颜色的不透明度。这样你就会让背景逐渐出现在你的矩形后面:
完整代码:
import plotly.graph_objs as go
fig=go.Figure()
for i in range(100):
opac = 1-(i/100)
fig.add_shape(type='line',
xref="x",
yref="y",
x0=2.5,
x1=3.5,
y0=i*(2/100),
y1=i*(2/100),
line=dict(color='rgba({}, {}, {}, {})'.format((0),(0),(255),(opac)),
width=5,))
fig.update_xaxes(range=[2, 4])
fig.update_yaxes(range=[-1, 2.5])
fig.show()