使用Python中的Plotly表值进行手动色彩缩放

时间:2018-11-25 02:54:17

标签: python plotly

我正在创建一个像这样的简单表...

trace = go.Table(
      header = dict(
        #some header info
      ),
      cells = dict(
        values = weeklyIntegers, #list e.g. [4, 11, 0, 32]
        line = dict(color = '#506784'),
        font = dict(color = '#506784', size = 9)
       ),
    )
    plotyData.append(trace)

layout = go.Layout(
    #some layout info
)

fig = Figure(data=plotyData, layout=layout)
plotly.offline.init_notebook_mode(connected=True)
plotly.offline.iplot(fig, filename='someFilename')

我正在尝试找出如何在不使用像colorlover 这样的库作为suggested here的情况下将简单的色标应用于单元格值的原因(原因是我没有可以控制环境以安装新的库。

我不能将预定颜色的列表传递给诸如...之类的单元格中的字体定义。

myColorList = ['red', 'blue', 'black', 'yellow']
cells = dict(
        values = weeklyIntegers, #list e.g. [4, 11, 0, 32]
        line = dict(color = '#506784'),
        font = dict(color = myColorList, size = 9)
       ),

我找不到任何有关此问题的文档,因此在这一点上,我只是在猜测适当的语法是什么。

1 个答案:

答案 0 :(得分:0)

如果您使用from plotly.colors import n_colors,则可以建立自己的色标,此色标在weeklyIntegers列表的长度方面将更加灵活。下面是使用蓝色的图形,但是我也为红色和绿色设置了两个变量。

情节:

enter image description here

代码:

# imports
from plotly.colors import n_colors
import plotly.graph_objects as go
import numpy as np
import pandas as pd


# color scale
a = [4, 11, 0, 32]
blues = n_colors('rgb(200, 200, 255)', 'rgb(0, 0, 200)', max(a)+1, colortype='rgb')
reds = n_colors('rgb(255, 200, 255)', 'rgb(200, 0, 0)', max(a)+1, colortype='rgb')
greens = n_colors('rgb(200, 255, 200)', 'rgb(0, 200, 0)', max(a)+1, colortype='rgb')


# plotly setup
fig = go.Figure()

# table setup
tbl = go.Table(header=dict(values=['<b>Table with custom color scale</b>'],
                            line_color='white', fill_color='white',
                            font=dict(color='white', size=8)),
               cells=dict(values=[a],
                            line_color=[np.array(blues)[a]],
                            fill_color=[np.array(blues)[a]],
                            align='center', font=dict(color='white', size=11)))

fig.add_trace(go.Table(tbl))

fig.show()