python - Plotly:如何使用 go.Figure 和 go.Scatter 为每个 y 误差条设置单独的颜色?
问题描述
我正在使用 Plotly 在 Python 中创建带有误差线的散点图。但是,我无法将颜色代码应用于错误栏。在Plotly 文档中,错误栏颜色将只采用“单一颜色”,因此当我添加颜色列表时它会失败。我该如何解决这个问题?
我提供了一个示例代码,以及我得到的情节。如果我在错误字典中删除颜色命令中的#,代码将出错。
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,因为我必须创建子图,并且需要控制。
解决方案
这完全没有问题,只要您像这里一样获得 y_error 数据err_y_data = [0.1, 0.2, 0.05]
。您不能为一条迹线的误差条添加多种颜色,但您可以为每个误差条添加一条迹线,其中包括:
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()
推荐阅读
- postgresql - 如何从事务块中的 INSERT 语句返回值?
- python - OutOfBoundsDatetime:越界纳秒时间戳
- cakephp-3.0 - CakePHP 3.8。安全组件 - FormHelper end() 方法
- c# - 使用 C# 和 Npgsql 返回 PostgreSQL 数据库上新插入行的 ID?
- android - 如何在 Firestore Android 中获取文档 ID
- java - DynamoDBMapper scanPage 不返回任何结果
- sql - 时间戳现在显示当前时间戳的所有字段
- sqlite - 将odoo数据库导出到cronjob中的sqlite
- python - 如何用 Python 打破“选择不同的图像”验证码
- java - 使用 Java 流处理字符串