插件 〉Plotly


开发者
nLine

资源

注册以接收偶尔的产品新闻和更新



面板
社区

Plotly

  • 概述
  • 安装
  • 变更日志
  • 相关内容

Plotly 面板

使用 Plotly.js 渲染图表。

  • 导出绘图图像(带指定分辨率和类型)
  • 支持 YAML/JSON
  • 自动/手动时区调整
  • 跨轨迹应用 Data 配置
  • 可扩展的代码编辑器
  • Grafana 变量替换
  • 强大的错误处理
  • ... 以及更多!

Marketplace Downloads


入门

Plotly 面板是 nLine 的尝试,旨在对我们在 Grafana 中渲染分析的方式有更多控制。它提供了一种基于组件的方法来构建 Plotly 面板。这样,您就可以独立地修改静态元素,而无需通过 JavaScript 与动态元素进行交互。

结构

datalayoutconfig 字段是必需的对象,在 Plotly 的文档 中有描述。它们必须按 此模式 结构化。但是,为了方便在开发过程中使用,它们可以被解析并解释为 YAML 或 JSON。这些字段由 Plotly 作为 { data: [traces], layout: layout, config: config } 消费,并在面板内生成一个 Plotly 图表。

数据源提供的数据可以在传递到 Plotly 图表之前通过用户定义的脚本进行转换。此 script 部分包含一些可以使用的隐式变量

data

数据源查询返回的数据。有关对象的模式,请参见下面的示例。

variables

包含 Grafana 的仪表板变量 的对象,这些变量在当前仪表板中可用(用户变量以及一些全局变量:__from__to__interval__interval_ms)。

parameters

面板的数据、布局和配置对象。在将数据面板中的静态属性(作为一项而不是数组)跨多个轨迹应用(例如通过合并)的情况下,这可能会有所帮助。

timeZone

仪表板时区

dayjs

一个 小型时区库

matchTimezone

一个用于包装时间序列数据的便捷函数,用于将数据转换为用户的时区。

该脚本必须返回一个包含以下一个或多个属性的对象

  • data
  • layout
  • config
  • frames

注意:dataframes 属性是字典/JSON 数组,必须以破折号开头(符合 YAML 规范)或作为函数返回值中的数组添加。但是,“跨跟踪数据”字段可以是一个对象,在这种情况下,它将把参数应用于脚本部分中返回的所有跟踪。所有对象都会合并在一起,脚本对象优先。例如,data 来自脚本 > allData > data

时区可以通过选择带有时区校正选项的时间列自动转换为用户仪表板时区。

Grafana 10 后的更改

⚠️ 在 Grafana 10 之前,从 data 变量访问字段的语法不同。使用 data.series[0].fields[0].values.buffer。10 版之后,这些数组存储时不带 .buffer 属性。

示例脚本

// Get the first series
let series = data.series[0];
// For buffer needed for Grafana < 10
let x = series.fields[0].values.buffer || series.fields[0].values;
let y = series.fields[1].values.buffer || series.fields[1].values;

// If you can reference your SQL column names, this might be easier // let fields = Object.fromEntries(data.series[0].fields.map((x) => [x.name, x.values])); // x, y = fields[’time’], fields[‘data’] // where ’time’ and ‘data’ are column names

// Switch from UTC to the dashboard time zone or use “Timezone correction” and select the column x = matchTimezone(x);

let series = { x: x, y: y, name: variables.dash_var, // Where ‘dash_var’ is the name of // a Grafana dashboard variable };

return { data: [series], config: { displayModeBar: false, }, };

截图

有关截图,请参见 src/img 文件夹。

在 Grafana Cloud 上安装 Plotly

有关更多信息,请访问关于 插件安装 的文档。

更改日志

此项目的任何重大更改都将在本文件中记录。

[1.7.0] - 2024-08-07

已更改

  • 进行重大重构,包含多个修复和改进
    • 图像导出反映所有配置选项
    • 与 Grafana 相匹配的亮/暗主题
    • 更新了主题颜色
    • 更好的错误显示
    • 当源中没有数据时,会显示更清晰的消息
    • 更新了边距(所有边距默认为 0)
  • 更多记忆化以减少重新渲染
  • 修复了工作流程并更新了 Node 版本
  • 使用 grafana/create-plugin 更新
  • 更新了许可证
  • 添加了更改日志

已修复

  • 修复了高度/宽度调整大小的错误
  • 修复了脚本验证可能导致的崩溃

[1.6.7] - 2024-04-08

已修复

  • 针对 1.6.7 的小修复

[1.6.6] - 2024-03-27

已更改

  • 将图像渲染函数移出面板
  • 改进了错误处理
  • 更新到 create-plugin

[1.6.5] - 2024-01-08

已更改

  • 更新了 README.md
  • 修复了可调整大小的问题

[1.6.4] - 2023-11-16

已修复

  • 修复了时区匹配器

[1.6.3] - 2023-11-16

已添加

  • 添加了选择时间校正列的功能

[1.6.2] - 2023-10-26

已改进

  • 增强了 matchTimezone 逻辑

[1.6.1] - 2023-10-06

已添加

  • 添加了图像导出格式选择器

已更改

  • 现在传递了整个变量对象

[1.6.0] - 2023-09-25

已修复

  • 修复了“浏览器”时区问题

已更改

  • 删除了强制默认值
  • 添加了 matchTimezone 函数