【问题标题】:Plotly: show every color of custom colorscale on colorbarPlotly:在颜色条上显示自定义色标的每种颜色
【发布时间】:2021-02-01 17:25:51
【问题描述】:

我的颜色条有 17 种不同颜色的自定义色阶,我的数据是 29x29 矩阵,值范围为 0-16。我希望我的颜色条为矩阵中的每个值显示所有 17 种颜色,然后颜色条上的刻度将为 0,1,2,3...16,并且每个刻度都与一种颜色相关联。事实上,我的颜色条显示了所有其他刻度,以及大约一半的颜色。如何更改它并在颜色栏上显示每种颜色和刻度?

这是我的测试数据:

    import numpy as np
    import plotly.graph_objects as go

    #custom colorscale
    colors=[(0.0,'#170d33' ), (0.0588, '#170d33'),
            (0.0588, '#2f4b7c'),(0.118,'#2f4b7c'),
            (0.118,'#2f4b7c'),(0.177,'#2f4b7c'),
            (0.177,'#665191'),(0.236,'#665191'),
            (0.236,'#875296'),(0.295,'#875296'),
            (0.295,'#a05195'),(0.354,'#a05195'),
            (0.354,'#d45087'),(0.413,'#d45087'),
            (0.413,'#f95d6a'),(0.471,'#f95d6a'),
            (0.471,'#ff7c43'),(0.53,'#ff7c43'),
            (0.53,'#ffa600'),(0.589,'#ffa600'),
            (0.589,'#ffc332'),(0.648,'#ffc332'),
            (0.648,'#fff629'),(0.707,'#fff629'),
            (0.707,'#f7ffbd'),(0.765,'#f7ffbd'),
            (0.765,'#d2ffbd'),(0.824,'#d2ffbd'),
            (0.824,'#a2ffc9'),(0.883,'#a2ffc9'),
            (0.883,'#85ffd4'),(0.942,'#85ffd4'),
            (0.942,'#1cfff0'),(1.0,'#1cfff0')]

    #random matrix illustrating my data
    mx=np.random.uniform(low=0., high=16, size=(29,29) )  

    fig=go.Figure()
    fig.add_trace(go.Contour(z=mx, coloraxis='coloraxis'))
    fig.update_layout(height=800, width=1000, coloraxis=dict(colorscale=colors), 
                        showlegend=False, font=dict(size=24), font_family='Open Sans')
    fig.show()

编辑:我认为如果我提供足够的颜色(相同数量或更多的值),颜色条会自动配置这样的颜色条 - 一个颜色一个勾号。不是真的,它接缝。 这是矩阵值 0-10 的另一个测试,颜色条显示我想要的。如果没有明确的方法来配置颜色条的颜色值,也许我应该提供更多颜色?

【问题讨论】:

  • 我没有在图表中看到任何不在颜色图例中的颜色,所以我的假设是它不是 plotly 的问题,但可能更多的是您的数据问题
  • @elizevin 你能分享一些关于"show every color"的细节吗?听起来您的目标是将一种特定颜色指定为一个特定数字。这听起来也具有分类的性质。而且不是数字的。或连续。 go.Contour
  • @elizevin 如果我的上述假设是错误的,可能有办法在连续轴上显示"colors for every value in the matrix"
  • @vestland 我认为这种方法对这个特定问题很有用。

标签: python plotly colorbar


【解决方案1】:

显示每种颜色的最佳选择似乎是:

fig.data[0].contours.coloring = 'heatmap'

代码:

import plotly.graph_objects as go
fig = go.Figure(data =
    go.Contour(
        z=[[10, 10.625, 12.5, 15.625, 20],
           [5.625, 6.25, 8.125, 11.25, 15.625],
           [2.5, 3.125, 5., 8.125, 12.5],
           [0.625, 1.25, 3.125, 6.25, 10.625],
           [0, 0.625, 2.5, 5.625, 10]]
    ))

fig.data[0].contours.coloring = 'heatmap'

fig.show()

【讨论】:

  • 嗯,这不是我的想法。我理想的解决方案是颜色条上的离散颜色,上面有所有颜色,并与每种颜色相关联的刻度,这样一个刻度对应一种颜色。没有办法吗?
  • @elizevin 不,据我所知。
猜你喜欢
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多