Plotly:如何使用 go.Figure 和 go.Scatter 为每个 y 误差条设置单独的颜色?
Plotly: How to set individual color for each y error bar using go.Figure and go.Scatter?
我正在使用 Plotly 在 Python 中创建带有误差线的散点图。但是,我无法将颜色代码应用于错误栏。在 Plotly documentation 中,错误栏颜色将只需要一个 'single color',因此当我添加颜色列表时它会失败。我该如何解决这个问题?
我提供了示例代码和我得到的情节。如果我在错误字典中删除颜色命令中的#,代码将出错。
import numpy as np
import plotly.graph_objects as go
x_data = ['10 days', '20 days', '30 days']
y_data = [0.5, 0.8, 0.4]
err_y_data = [0.1, 0.2, 0.05]
colors = ['rgba(93, 164, 214, 0.7)', 'rgba(255, 144, 14, 0.7)', 'rgba(44, 160, 101, 0.7)']
fig = go.Figure()
fig.add_trace(go.Scatter(
x=x_data,
y=y_data,
text=np.round(y_data, 1),
mode='markers+text',
textposition='top center',
error_y=dict(
type='data',
#color = colors,
array=err_y_data,
visible=True),
marker=dict(color=colors, size=12)
))
fig.show()
我得到以下情节,
但是,理想情况下,我希望误差线与相应标记的颜色相同。我不能使用 plotly express,因为我必须创建子图,并且需要控制。
这完全没有问题,只要您像这里 err_y_data = [0.1, 0.2, 0.05]
一样获得 y_error 数据。您不能向 one trace 的误差条添加多种颜色,但您 can 为每个误差条添加一个 trace,除其他外,使用:
for i, bar in enumerate(err_y_data):
fig.add_trace(go.Scatter(
x=[x_data[i]],
y=[y_data[i]],
error_y=dict( type='data',color = colors[i],array=[bar],visible=True),
marker=dict(color='rgba(0,0,0,0)', size=12),
showlegend=False
))
剧情:
完整代码:
import numpy as np
import plotly.graph_objects as go
x_data = ['10 days', '20 days', '30 days']
y_data = [0.5, 0.8, 0.4]
err_y_data = [0.1, 0.2, 0.05]
colors = ['rgba(93, 164, 214, 0.7)', 'rgba(255, 144, 14, 0.7)', 'rgba(44, 160, 101, 0.7)']
fig = go.Figure()
fig.add_trace(go.Scatter(x=x_data, y=y_data,
text=np.round(y_data, 1),
mode='markers+text',
textposition='top center',
# error_y=dict(
# type='data',
# #color = colors,
# array=err_y_data,
# visible=True),
marker=dict(color=colors, size=12),
showlegend=False
))
for i, bar in enumerate(err_y_data):
fig.add_trace(go.Scatter(
x=[x_data[i]],
y=[y_data[i]],
# text=np.round(y_data, 1),
mode='markers+text',
textposition='top center',
error_y=dict(
type='data',
color = colors[i],
array=[bar],
visible=True),
marker=dict(color='rgba(0,0,0,0)', size=12),
showlegend=False
))
fig.show()
我正在使用 Plotly 在 Python 中创建带有误差线的散点图。但是,我无法将颜色代码应用于错误栏。在 Plotly documentation 中,错误栏颜色将只需要一个 'single color',因此当我添加颜色列表时它会失败。我该如何解决这个问题?
我提供了示例代码和我得到的情节。如果我在错误字典中删除颜色命令中的#,代码将出错。
import numpy as np
import plotly.graph_objects as go
x_data = ['10 days', '20 days', '30 days']
y_data = [0.5, 0.8, 0.4]
err_y_data = [0.1, 0.2, 0.05]
colors = ['rgba(93, 164, 214, 0.7)', 'rgba(255, 144, 14, 0.7)', 'rgba(44, 160, 101, 0.7)']
fig = go.Figure()
fig.add_trace(go.Scatter(
x=x_data,
y=y_data,
text=np.round(y_data, 1),
mode='markers+text',
textposition='top center',
error_y=dict(
type='data',
#color = colors,
array=err_y_data,
visible=True),
marker=dict(color=colors, size=12)
))
fig.show()
我得到以下情节,
但是,理想情况下,我希望误差线与相应标记的颜色相同。我不能使用 plotly express,因为我必须创建子图,并且需要控制。
这完全没有问题,只要您像这里 err_y_data = [0.1, 0.2, 0.05]
一样获得 y_error 数据。您不能向 one trace 的误差条添加多种颜色,但您 can 为每个误差条添加一个 trace,除其他外,使用:
for i, bar in enumerate(err_y_data):
fig.add_trace(go.Scatter(
x=[x_data[i]],
y=[y_data[i]],
error_y=dict( type='data',color = colors[i],array=[bar],visible=True),
marker=dict(color='rgba(0,0,0,0)', size=12),
showlegend=False
))
剧情:
完整代码:
import numpy as np
import plotly.graph_objects as go
x_data = ['10 days', '20 days', '30 days']
y_data = [0.5, 0.8, 0.4]
err_y_data = [0.1, 0.2, 0.05]
colors = ['rgba(93, 164, 214, 0.7)', 'rgba(255, 144, 14, 0.7)', 'rgba(44, 160, 101, 0.7)']
fig = go.Figure()
fig.add_trace(go.Scatter(x=x_data, y=y_data,
text=np.round(y_data, 1),
mode='markers+text',
textposition='top center',
# error_y=dict(
# type='data',
# #color = colors,
# array=err_y_data,
# visible=True),
marker=dict(color=colors, size=12),
showlegend=False
))
for i, bar in enumerate(err_y_data):
fig.add_trace(go.Scatter(
x=[x_data[i]],
y=[y_data[i]],
# text=np.round(y_data, 1),
mode='markers+text',
textposition='top center',
error_y=dict(
type='data',
color = colors[i],
array=[bar],
visible=True),
marker=dict(color='rgba(0,0,0,0)', size=12),
showlegend=False
))
fig.show()