同一条线的不同标记颜色

3

我想用 plotly 和 dash 创建一个简单的网页应用程序中的线性图。我想要连接两个点的线条,其中一个点为红色,另一个点为绿色。以下是我目前所拥有的:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets = external_stylesheets)
graph = dcc.Graph(figure = {
    'data' : [
        go.Scatter(x = [1,4], y = [2,3], mode = 'lines+markers', opacity = 0.7, marker = {
            'size' : 15,
            'line' : {'width' : 0.5, 'color' : 'black'}
        })
    ]
})
app.layout = html.Div([graph])
if __name__ == '__main__':
    app.run_server(debug = False)

我在最新版本的Jupyter笔记本中运行此代码。如果我运行此代码,我会得到我想要的折线图,但是这两个点都是蓝色的。我想让对应于(1,2)的点变为红色,(4,3)变为绿色。我该如何操作呢? 非常感谢您提前的帮助!

1个回答

5

我认为解决这个问题的方案是在你的图表数据中有3个不同的go.scatter()对象。一个用于线,另外两个用于每个标记点。你的应用程序最终会看起来像这样:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets = external_stylesheets)
graph = dcc.Graph(figure = {
    'data' : [
        go.Scatter(x = [1,4], y = [2,3], mode = 'lines+markers', opacity = 0.7, 
                   marker={'color':["red","green"], "size":15})
    ]
})
app.layout = html.Div([graph])

if __name__ == '__main__':
    app.run_server(debug = False)

嗨!非常感谢您的回复。那肯定可以解决我的问题。我想知道...是否有其他方法来解决这个问题?绘制3倍数量的图表似乎是不必要的低效率。 - Derek Langley
1
哦,有更好的方法可以做到。抱歉,我认为你需要为不同的彩色条使用不同的标记。请查看我的编辑答案。 - Mason Caiby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接