首页 > 解决方案 > 如何在破折号python中向条形图添加色阶

问题描述

我正在绘制一个条形图,该条形图每秒更新一次,我想为其添加色阶。

import plotly.graph_objects as go

@app.callback(Output('my-graph', 'figure'),
              [Input('my-interval-component', 'n_intervals')])
def update_graph_soc(n):
    connection = sqlite3.connect(r'C:\Users\user\Desktop\database\newbase.db', )
    connection.execute('pragma journal_mode=wal')
    data = connection.cursor()
    latest = None
    try:
        data = connection.cursor()
        latest = (data.execute("""SELECT
                                    v1,v2,v3,v4
                                    SNO FROM sop where SNO ==(SELECT MAX([SNO]) FROM [sop])""").fetchall().__getitem__(0))
    except Exception as e:
        print(e)
    z = []
    values = go.Bar(
        x=['v1','v2','v3','v4'], y=latest)
    return {'data': [values], 'layout': go.Layout(title='graph',yaxis_title='values(in x)',
                                                  xaxis_title='sample: ' + str(int(latest[4])),colorscale='Viridis')}

我试图以上述方式做到这一点,我将 Viridis 作为色阶,但它不起作用。任何帮助将不胜感激在此先感谢。

标签: pythonplotlyplotly-dash

解决方案


@eliasdabbas在Plotly 社区论坛中回答了这个问题:您需要传递colorscalemarker参数字典而不是layout

values = go.Bar(
    x=['v1','v2','v3','v4'], 
    y=latest, 
    marker={'color': [i+1 for i,_ in enumerate(y)], 'colorscale': 'Viridis'}
)

推荐阅读