代码之家  ›  专栏  ›  技术社区  ›  CiaranWelsh

如何使用python的plotly使图例具有与数据点对应的颜色?

  •  1
  • CiaranWelsh  · 技术社区  · 7 年前

    我在跟踪情节 documentation 用于绘制散点图。这是我的代码:

    我首先创建一个与我正在使用的形状相同的假数据框

    import pandas
    import colorlover as cl
    import plotly
    import plotly.graph_objs as go
    import numpy
    data = numpy.random.normal(0, 1, 3*6*11*2)
    data = data.reshape(((3*6*11), 2))
    data = pandas.DataFrame(data)
    sub_experiments = ['Subexperiment_{}'.format(i) for i in [1, 2, 3]]
    repeats = ['Repeat_{}'.format(i) for i in range(1, 7)]
    time = ['{}h'.format(i) for i in range(11)]
    
    array = [sub_experiments, repeats, time]
    idx = pandas.MultiIndex.from_product(array, names=['SubExperiment', 'Repeats', 'Time'])
    data.index = idx
    

    scatters = []
    for label, df in data.groupby(level=[0, 1]):
        scales = cl.scales[str(df.shape[0])]
        colour = scales['qual']['Paired']
        d = go.Scatter(
            x=df[0],
            y=df[1],
            mode='markers',
            name=reduce(lambda x, y: '{}_{}'.format(x, y), label),
            marker=go.Marker(color=colour, line=go.Line(color='black')),
        )
        scatters.append(d)
    

    看起来像这样:

    enter image description here

    请注意,由于我已经为这个示例编写了数据,并且我实际上正在进行主成分分析,所以上面屏幕截图中的图显示了集群,而示例代码则不会。

    plotly 没有像点一样给图例上色。

    我怎样才能以与点相同的方式给图例上色?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Maximilian Peters    7 年前

    您正在传递一个数组,其中每个轨迹都有颜色,即每个轨迹都有几个不同的颜色,在图例中选择一个颜色真的没有意义(请尝试删除 color=colour 以查看效果)。

    在第一种情况下,您可以为每个轨迹选择一种颜色。在后一种情况下,在我看来,绘制时间并为每个时间指定一种颜色更有意义。