你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
情节(预览)
适用于:✅Microsoft Fabric✅Azure 数据资源管理器✅Azure Monitor✅Microsoft Sentinel
Plotly 图形库支持大约 80 种图表类型,这些类型可用于高级图表,包括地理、科学、机器学习、3d、动画和其他许多图表类型。 有关详细信息,请参阅 Plotly。
若要在 Kusto 查询语言中呈现 Plotly 视觉对象,查询必须生成包含 Plotly JSON的单个字符串单元格的表。 此 Plotly JSON 字符串可由以下两种方法之一生成:
- 在 Python 中编写自己的绘图可视化效果
- 使用预先准备的绘图模板
在 Python 中编写自己的 Plotly 可视化效果
在此方法中,将使用 Plotly 包在 Python 中动态创建 Plotly JSON 字符串。 此过程需要使用 python() 插件。 Python 脚本使用内联 python() 插件在现有节点上运行。 它生成客户端应用程序呈现的 Plotly JSON。
支持所有类型的绘图可视化效果。
注意
为了获得最佳性能,请确保 python 插件映像包含最新版本的 Python 引擎(当前为 3.10.8)。 使用 get_packages_version_fl() 函数检查最新版本。 若要升级 Python 映像,请参阅 更改群集上的 Python 语言扩展映像。
例
以下查询使用内联 Python 创建三维散点图:
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"])
```)
Plotly 图形库支持大约 80 种图表类型,包括基本图表、科学、统计、财务、地图、3D、动画等。 若要在 KQL 中呈现 Plotly 视觉对象,查询必须生成包含 Plotly JSON的单个字符串单元格的表。
由于此服务中不提供 python,因此可以使用预先准备的模板创建此 Plotly JSON。
使用预先准备的 Plotly 模板
在此方法中,可以将预先准备的 Plotly JSON 用于特定可视化效果,方法是将数据对象替换为要呈现的数据。 模板可以存储在标准表中,数据替换逻辑可以打包到存储的函数中。
目前,支持的模板包括:plotly_anomaly_fl() 和 plotly_scatter3d_fl()。 有关语法和用法,请参阅这些文档。
例
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