plotly 图形对象在 2 种形式内改变颜色
plotly graph objects change color inside 2 forms
我正在研究 plotly.graph_objects。这是我的结果:
并且我想在绿线和黑线之间更改我的第二个块(15 到 35)内的颜色(例如红色)。
这是我的代码:
from cgitb import text
import plotly.graph_objects as go
import numpy as np
labels = [5, 17, 39]
widths = np.array([10,20,10])
data = {
"x1": [75,75,30],
"x2": [75,0,45],
"x3": [0,75,75],
}
x = [0, 4 , 12]
fig = go.Figure()
color = {
"x1": '#E5EBF7',
"x2": '#D9CD9F',
"x3": '#F7F4E9',
}
for key in data:
fig.add_trace(
go.Bar(
name=key,
y=data[key],
x= labels,
width=widths,
offset=0,
customdata=np.transpose([labels, widths*data[key]]),
texttemplate="%{y} x %{width} =<br>%{customdata[1]}",
marker_color = color[key],
textfont_color="white",
textposition="inside",
textangle=0,
# hovertemplate="<br>".join([
# "label: %{customdata[0]}",
# "width: %{width}",
# "height: %{y}",
# "area: %{customdata[1]}",
# ])
))
fig.update_layout({
'plot_bgcolor': 'rgba(0, 0, 0, 0)',
})
#les lignes
fig.add_shape( # add a horizontal "target" line
type="line", line_color="black", line_width=3, opacity=1,
x0=0, x1=55, y0=0, y1=0
)
fig.add_shape( # add a vertigal "target" line
type="line", line_color="black", line_width=3, opacity=1,
x0=4.5, x1=4.5, y0=0, y1=150
)
fig.add_shape( # add a lignes premier block line
type="line", line_color="black", line_width=3, opacity=1, line_dash="dot",
x0=5, x1=15, y0=75, y1=75
)
fig.add_shape( # add la ligne horizontale deuxieme block line
type="line", line_color="black", line_width=3, opacity=1, line_dash="dot",
x0=17, x1=37, y0=75, y1=75
)
fig.add_shape( # add la ligne horizontale deuxieme block line degressive
type="line", line_color="green", line_width=3, opacity=1, line_dash="dot",
x0=17, x1=37, y0=100, y1=77.5
)
fig.add_shape( # add la ligne horizontale troisieme block line
type="line", line_color="black", line_width=3, opacity=1, line_dash="dot",
x0=39, x1=49, y0=75, y1=75
)
fig.update_layout(barmode="stack",uniformtext=dict(mode="hide", minsize=10),
)
#ICI FAIRE EN SORTE S IL Y A 2 OU 3 BLOCS (OU MANIERE DYNAMIQUE MAIS JE N Y ARRIVE PAS)
#le premier parametre de range x, permet de mettre ou non un blanc entre le 0 et le premier bloc
fig.update_xaxes(range=[4,55])
fig.update_yaxes(range=[0,130])
fig.show()
我查看了文档和教程示例,但没有找到任何内容。
我猜是这样的:“while x > 15 and x < 37 and y > 75 and y < green.line.y” fig is green
如果有人有任何解决方案或建议。
谢谢!
最简单的方法是在散点图上使用线模式添加三角形,指定从 x-axis 和 y-axis 开始到起点的四个点。指定任何颜色作为填充。
fig.add_trace(go.Scatter(x=[17,37,17,17],
y=[77.5,77,100,77],
fill='toself',
fillcolor='#D9CD9F',
line=dict(width=0),
showlegend=False,
mode='lines'))
我正在研究 plotly.graph_objects。这是我的结果:
并且我想在绿线和黑线之间更改我的第二个块(15 到 35)内的颜色(例如红色)。
这是我的代码:
from cgitb import text
import plotly.graph_objects as go
import numpy as np
labels = [5, 17, 39]
widths = np.array([10,20,10])
data = {
"x1": [75,75,30],
"x2": [75,0,45],
"x3": [0,75,75],
}
x = [0, 4 , 12]
fig = go.Figure()
color = {
"x1": '#E5EBF7',
"x2": '#D9CD9F',
"x3": '#F7F4E9',
}
for key in data:
fig.add_trace(
go.Bar(
name=key,
y=data[key],
x= labels,
width=widths,
offset=0,
customdata=np.transpose([labels, widths*data[key]]),
texttemplate="%{y} x %{width} =<br>%{customdata[1]}",
marker_color = color[key],
textfont_color="white",
textposition="inside",
textangle=0,
# hovertemplate="<br>".join([
# "label: %{customdata[0]}",
# "width: %{width}",
# "height: %{y}",
# "area: %{customdata[1]}",
# ])
))
fig.update_layout({
'plot_bgcolor': 'rgba(0, 0, 0, 0)',
})
#les lignes
fig.add_shape( # add a horizontal "target" line
type="line", line_color="black", line_width=3, opacity=1,
x0=0, x1=55, y0=0, y1=0
)
fig.add_shape( # add a vertigal "target" line
type="line", line_color="black", line_width=3, opacity=1,
x0=4.5, x1=4.5, y0=0, y1=150
)
fig.add_shape( # add a lignes premier block line
type="line", line_color="black", line_width=3, opacity=1, line_dash="dot",
x0=5, x1=15, y0=75, y1=75
)
fig.add_shape( # add la ligne horizontale deuxieme block line
type="line", line_color="black", line_width=3, opacity=1, line_dash="dot",
x0=17, x1=37, y0=75, y1=75
)
fig.add_shape( # add la ligne horizontale deuxieme block line degressive
type="line", line_color="green", line_width=3, opacity=1, line_dash="dot",
x0=17, x1=37, y0=100, y1=77.5
)
fig.add_shape( # add la ligne horizontale troisieme block line
type="line", line_color="black", line_width=3, opacity=1, line_dash="dot",
x0=39, x1=49, y0=75, y1=75
)
fig.update_layout(barmode="stack",uniformtext=dict(mode="hide", minsize=10),
)
#ICI FAIRE EN SORTE S IL Y A 2 OU 3 BLOCS (OU MANIERE DYNAMIQUE MAIS JE N Y ARRIVE PAS)
#le premier parametre de range x, permet de mettre ou non un blanc entre le 0 et le premier bloc
fig.update_xaxes(range=[4,55])
fig.update_yaxes(range=[0,130])
fig.show()
我查看了文档和教程示例,但没有找到任何内容。 我猜是这样的:“while x > 15 and x < 37 and y > 75 and y < green.line.y” fig is green
如果有人有任何解决方案或建议。 谢谢!
最简单的方法是在散点图上使用线模式添加三角形,指定从 x-axis 和 y-axis 开始到起点的四个点。指定任何颜色作为填充。
fig.add_trace(go.Scatter(x=[17,37,17,17],
y=[77.5,77,100,77],
fill='toself',
fillcolor='#D9CD9F',
line=dict(width=0),
showlegend=False,
mode='lines'))