Compartilhar via


Plotly (versão prévia)

Alterne os serviços usando a lista suspensa Versão. Saiba mais sobre navegação.
Aplica-se a: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

A biblioteca de gráficos Plotly dá suporte a ~80 tipos de gráfico que são úteis para gráficos avançados, incluindo geográfico, científico, machine learning, 3d, animação e muitos outros tipos de gráfico. Para obter mais informações, consulte Plotly.

Para renderizar um visual Plotly na Linguagem de Consulta Kusto, a consulta deve gerar uma tabela com uma única célula de cadeia de caracteres contendo JSON Plotly. Essa cadeia de caracteres JSON plotada pode ser gerada por um dos dois métodos a seguir:

Escrever sua própria visualização Plotly no Python

Nesse método, você cria dinamicamente a cadeia de caracteres JSON plotada em Python usando o pacote Plotly. Esse processo requer o uso do plug-in python(). O script Python é executado nos nós existentes usando o plug-in python() embutido. Ele gera um JSON plotado que é renderizado pelo aplicativo cliente.

Todos os tipos de visualizações plotadas têm suporte.

Nota

Para obter melhor desempenho, verifique se a imagem do plug-in do Python contém a versão mais recente do mecanismo Python (atualmente 3.10.8). Verifique a versão mais recente com a função get_packages_version_fl(). Para atualizar a imagem do Python, consulte Alterar a imagem de extensões de linguagem Python em seu cluster.

Exemplo

A consulta a seguir usa o Python embutido para criar um gráfico de dispersão 3D:

OccupancyDetection
| project Temperature, Humidity, CO2, Occupancy
| where rand() < 0.1
| evaluate python(typeof(plotly:string),
```if 1:
    import plotly.express as px
    fig = px.scatter_3d(df, x='Temperature', y='Humidity', z='CO2', color='Occupancy')
    fig.update_layout(title=dict(text="Occupancy detection, plotly 5.11.0"))
    plotly_obj = fig.to_json()
    result = pd.DataFrame(data = [plotly_obj], columns = ["plotly"])
```)

Captura de tela do tipo visual plotado.

A biblioteca de gráficos Plotly dá suporte a ~80 tipos de gráficos, incluindo gráficos básicos, científicos, estatísticos, financeiros, mapas, 3D, animações e muito mais. Para renderizar um visual Plotly no KQL, a consulta deve gerar uma tabela com uma única célula de cadeia de caracteres contendo JSON plotado.

Como o Python não está disponível neste serviço, você cria esse JSON plotado usando um modelo pré-preparado.

Usar um modelo plotly pré-preparado

Nesse método, um JSON Plotly pré-preparado para visualização específica pode ser reutilizado substituindo os objetos de dados pelos dados necessários a serem renderizados. Os modelos podem ser armazenados em uma tabela padrão e a lógica de substituição de dados pode ser empacotada em uma função armazenada.

Atualmente, os modelos com suporte são: plotly_anomaly_fl() e plotly_scatter3d_fl(). Consulte esses documentos para sintaxe e uso.

Exemplo

let plotly_scatter3d_fl=(tbl:(*), x_col:string, y_col:string, z_col:string, aggr_col:string='', chart_title:string='3D Scatter chart')
{
    let scatter3d_chart = toscalar(PlotlyTemplate | where name == "scatter3d" | project plotly);
    let tbl_ex = tbl | extend _x = column_ifexists(x_col, 0.0), _y = column_ifexists(y_col, 0.0), _z = column_ifexists(z_col, 0.0), _aggr = column_ifexists(aggr_col, 'ALL');
    tbl_ex
    | serialize 
    | summarize _x=pack_array(make_list(_x)), _y=pack_array(make_list(_y)), _z=pack_array(make_list(_z)) by _aggr
    | summarize _aggr=make_list(_aggr), _x=make_list(_x), _y=make_list(_y), _z=make_list(_z)
    | extend plotly = scatter3d_chart
    | extend plotly=replace_string(plotly, '$CLASS1$', tostring(_aggr[0]))
    | extend plotly=replace_string(plotly, '$CLASS2$', tostring(_aggr[1]))
    | extend plotly=replace_string(plotly, '$CLASS3$', tostring(_aggr[2]))
    | extend plotly=replace_string(plotly, '$X_NAME$', x_col)
    | extend plotly=replace_string(plotly, '$Y_NAME$', y_col)
    | extend plotly=replace_string(plotly, '$Z_NAME$', z_col)
    | extend plotly=replace_string(plotly, '$CLASS1_X$', tostring(_x[0]))
    | extend plotly=replace_string(plotly, '$CLASS1_Y$', tostring(_y[0]))
    | extend plotly=replace_string(plotly, '$CLASS1_Z$', tostring(_z[0]))
    | extend plotly=replace_string(plotly, '$CLASS2_X$', tostring(_x[1]))
    | extend plotly=replace_string(plotly, '$CLASS2_Y$', tostring(_y[1]))
    | extend plotly=replace_string(plotly, '$CLASS2_Z$', tostring(_z[1]))
    | extend plotly=replace_string(plotly, '$CLASS3_X$', tostring(_x[2]))
    | extend plotly=replace_string(plotly, '$CLASS3_Y$', tostring(_y[2]))
    | extend plotly=replace_string(plotly, '$CLASS3_Z$', tostring(_z[2]))
    | extend plotly=replace_string(plotly, '$TITLE$', chart_title)
    | project plotly
};
Iris
| invoke plotly_scatter3d_fl(x_col='SepalLength', y_col='PetalLength', z_col='SepalWidth', aggr_col='Class', chart_title='3D scatter chart using plotly_scatter3d_fl()')
| render plotly

Captura de tela da saída do exemplo plotal.