使用图表配置编辑器自定义可视化图表

您可以使用图表配置编辑器自定义使用 HighCharts API 的 Looker 可视化图表的格式设置选项。这包括大多数笛卡尔图表,例如柱形图条形图折线图等。

如果 Gemini in Looker 功能已启用,您可以使用数据可视化助理根据基于文本的提示生成 JSON 格式选项,从而加快 Looker 可视化图表的自定义速度。

前提条件

如需访问图表配置编辑器,您必须拥有 can_override_vis_config 权限

自定义可视化图表

如需使用图表配置编辑器自定义可视化图表,请按以下步骤操作:

  1. 在探索中查看可视化图表,或在 Look 或信息中心中修改可视化图表。
  2. 在可视化中打开修改菜单。
  3. 点击图表标签页中的修改图表配置按钮。Looker 会显示修改图表配置对话框。

    • 图表配置(来源)窗格包含可视化图表的原始 JSON,无法进行修改。

    • 图表配置(替换)窗格包含应替换源 JSON 的 JSON。首次打开修改图表配置对话框时,Looker 会在窗格中填充一些默认 JSON。您可以从这个 JSON 开始,也可以删除这个 JSON 并输入任何有效的 HighCharts JSON。

  4. 选择 Chart Config (Override) 部分,然后输入一些有效的 HighCharts JSON。新值将替换图表配置(来源)部分中的所有值。

    • 如需查看有效的 HighCharts JSON 示例,请参阅示例部分。
    • Looker 接受任何有效的 JSON 值。Looker 不接受函数、日期或未定义的值。
  5. 点击 <>(格式化代码),以便 Looker 正确格式化您的 JSON。

  6. 点击预览以测试更改。

  7. 点击应用以应用更改。系统将使用自定义 JSON 值显示可视化图表。

自定义可视化图表后,您可以将其保存。如果您在探索中查看了可视化图表,请保存探索。如果您修改了 Look 或信息中心,请点击保存

如果您尝试预览包含无效 JSON 的代码,Looker 会显示 Invalid JSON detected 错误消息。您可以使用图表配置(覆盖)窗格底部的自动修正代码 选项清理无效的 JSON。

如果您想修改默认的可视化选项,请先移除在图表配置编辑器中所做的任何更改,然后再替换这些更改。具体来说,请按以下步骤操作:

  1. 点击图表标签页中的修改图表配置按钮。Looker 会显示修改图表配置对话框。
  2. 复制图表配置(替换)窗格中的文本。
  3. 点击清除图表替换项按钮可删除所有更改。
  4. 点击应用
  5. 使用默认的可视化选项修改可视化图表。
  6. 点击图表标签页中的修改图表配置按钮。Looker 会显示修改图表配置对话框。
  7. 图表配置(覆盖)窗格中输入一些有效的 HighCharts JSON。您可以使用在第 2 步中复制的文本作为模板,但请务必使用预览按钮测试您的更改,以确保没有冲突。
  8. 点击应用

使用 series formatters 的条件格式

图表配置编辑器接受大多数有效的 HighCharts JSON。它还接受仅在 Looker 中存在的 series formatters 属性。每个序列都可以有多个格式化程序,以组合不同的样式规则。

series formatters 属性接受两个属性:selectstyle

  • select 属性中输入一个逻辑表达式,以指明要设置哪些数据值的格式。
  • style 属性中输入一些 JSON,以指明如何设置数据值的格式。

例如,以下 JSON 会将每个大于或等于 380 的数据值着色为橙色:

{
  series: [{
    formatters: [{
      select: 'value >= 380',
      style: {
        color: 'orange'
      }
    }]
  }]
}

以下各部分将更详细地介绍 selectstyle 属性的可能值。

select 属性

您可以在 select 表达式中使用以下值:

  • value:此变量会返回序列的值。您可以在比较中使用此值,如以下示例所示:
  • max:使用 select: max 可将具有最大值的序列值作为目标值。
  • min:使用 select: min 可定位到具有最小值的序列值。
  • percent_rank:此变量用于定位具有指定百分位数的序列值。例如,您可以使用 select: percent_rank >= 0.9 来定位第 90 百分位的序列值。
  • name:此变量会返回序列的维度值。例如,如果您有一个图表显示已售出、已取消和已退回的订单,则可以使用 select: name = Sold 来定位维度值为“已售出”的序列。
  • AND/OR 使用 ANDOR 可组合多个逻辑表达式。

如需查看如何在图表配置编辑器中实现这些表达式,请参阅为最大值、最小值和百分位数值着色示例。

style 属性

style 属性可用于应用 HighCharts 支持的样式。例如,您可以使用 style.color 为序列值着色,使用 style.borderColor 为序列边框着色,并使用 style.borderWidth 设置序列边框宽度。如需查看更完整的样式选项列表,请参阅 series.column.dataHighcharts 选项

对于折线图,请使用 style.marker.fillColorstyle.marker.lineColor,而不是 style.color。如需查看更完整的线条样式选项列表,请参阅 Highcharts 针对 series.line.data.marker 的选项

如需查看在图表配置编辑器中实现的颜色格式设置,请参阅为最大值、最小值和百分位数值着色示例。

字段元数据

借助字段元数据下拉菜单,您可以复制可视化图表中任何字段的序列名称。您可以使用 series formatters 属性来比较不同序列的值。如需查看示例,请参阅将序列颜色与其他序列值进行比较部分。

示例

以下部分提供了一些有关图表配置编辑器的常见用例示例。如需查看可编辑的属性的完整列表,请参阅 HighCharts API 文档

更改背景颜色和轴文本颜色

如需更改图表的背景颜色,请使用 chart.backgroundColor 属性。

同样,如需更改可视化图表中轴的文字颜色,请使用以下属性:

以下 HighCharts JSON 会将可视化图表的背景颜色更改为紫色,并将轴标题和标签的文本更改为白色。

{
  chart: {
    backgroundColor: "purple"
  },

  xAxis: {
    labels: {
      style: {
        color: "white"
      }
    },
    title: {
      style: {
        color: "white"
      }
    }
  },

  yAxis: {
    labels: {
      style: {
        color: "white"
      }
    },
    title: {
      style: {
        color: "white"
      }
    }
  }
}

自定义提示颜色

如需自定义提示的颜色,请使用以下属性:

以下 HighCharts JSON 会将提示的背景颜色更改为青色,并将提示文本的颜色更改为黑色。

{
  tooltip: {
    backgroundColor: "cyan",
    style: {
      color: "black"
    }
  }
}

自定义提示内容和样式

如需自定义提示的内容,请使用以下属性:

以下 HighCharts JSON 会更改提示格式,使 x 轴值以较大字体显示在提示顶部,后面是该点处的所有序列值列表。

此示例使用了以下 HighCharts 函数和变量:

  • {key} 是一个变量,用于返回所选点的 x 轴值(在本例中为月份和年份)。
  • {#each points}{/each} 是一种函数,用于针对图表中的每个序列重复执行封闭的代码。
  • {series.name} 是一个返回序列名称的变量。
  • {y:.2f} 是一个变量,用于返回所选点的 y 轴值(四舍五入到小数点后两位)。
    • {y} 是一个变量,用于返回所选点的 y 轴值。
    • {variable:.2f}variable 四舍五入到小数点后两位。如需查看更多值格式设置示例,请参阅 Highcharts 模板文档
{
  tooltip: {
    format: '<span style="font-size: 1.8em">{key}</span><br/>{#each points}<span style="color:{color}; font-weight: bold;">\u25CF {series.name}: </span>{y:.2f}<br/>{/each}',
    shared: true
  },
}

添加图表注释和说明

如需添加注解,请使用 annotations 属性。如需为图表添加字幕,请使用 caption 属性。

如需获取某个点的坐标,请点击修改图表配置对话框顶部的检查点元数据。然后,将指针悬停在要添加注释的数据点上。Looker 会显示一个点 ID,您可以在 annotations.labels.point 属性中使用该 ID。

以下 HighCharts JSON 向图表中添加了两条注释,用于说明在特定时间段后库存商品数量的减少情况。它还在图表底部添加了标题,用于更详细地说明注释。

{
  caption: {
    text: 'Items go on clearance after 60 days, and are thrown away after 80 days. Thus we see large drops in inventory after these events.'
  },
  annotations: [{
    labels: [{
        point: "inventory_items.count-60-79",
        text: "Clearance sale"
      },
      {
        point: "inventory_items.count-80+",
        text: "Thrown away"
      },
    ]
  }]
}

添加动态注释

您还可以使用 annotationsSourceannotationsTarget 参数将字段中的数据用作注解。

如需获取字段名称,您可以使用字段元数据下拉菜单。请注意,annotationsTarget 字段必须是指标。

以下 HighCharts JSON 使用 orders.annotations 字段中的值作为 orders.count 字段的注解:

{
  annotations: [{
    labels: [{
      annotationsSource: 'orders.annotations',
      annotationsTarget: 'orders.count'
    }]
  }]
}

添加垂直参考频段

如需添加垂直参考频段,请使用 xAxis.plotBands 属性。

以下 HighCharts JSON 添加了一个介于 2022 年 11 月 24 日和 2022 年 11 月 29 日之间的垂直参考带,以表示促销期。它还在图表底部添加了一个说明,用于解释该参考带的意义。

请注意,xAxis.plotBandstofrom 属性必须与图表中的数据值相对应。在此示例中,由于数据是基于时间的,因此这些属性接受 Unix 时间戳值(1669680000000 表示 2022 年 11 月 29 日,1669248000000 表示 2022 年 11 月 24 日)。tofrom HighCharts 属性不支持基于字符串的日期格式,例如 MM/DD/YYYY 和 DD-MM-YY。

{
  caption: {
    text: 'This chart uses the HighCharts plotBands attribute to display a band around the Black Friday Cyber Monday sale period.'
  },
  xAxis: {
    plotBands: [{
      to: 1669680000000,
      from: 1669248000000,
      label: {
        text: 'BFCM Sale Period'
      }
    }]
  },
}

添加虚线和短划线

如需将实线更改为点划线或虚线,请使用 series.dashStyle 属性。

以下 HighCharts JSON 将 Customers 系列的 dashStyle 属性更改为虚线,并将 Sales 系列的 dashStyle 属性更改为点划线。

{
  series: [{
    name: 'Customers',
    dashStyle: 'Dash'
  }, {
    name: 'Sales',
    dashStyle: 'Dot'
  }]
}

为最大值、最小值和百分位数值着色

如需详细了解如何为笛卡尔坐标图中的最大值、最小值和百分位数值着色,请参阅充分利用 Looker 可视化图表食谱:笛卡尔坐标图中的条件格式自定义页面。

与系列中其他值相比的颜色系列

从 Looker 25.0 开始,您可以使用 formatters.select 参数将当前数据值与其他序列的值进行比较。

例如,假设有一个可视化图表显示了多个城市的平均售价和中位数售价。以下 HighCharts JSON 会在平均售价大于或等于中位数售价时将平均售价的颜色更改为绿色,否则更改为栗色:

{
  chart: {},
  series: [{
    name: 'Average Sale Price',
    formatters: [{
        select: 'value >= order_items.median_sale_price',
        style: {
          color: 'green',
          dataLabels: {
            color: 'green'
          }
        }
      },
      {
        select: 'value < order_items.median_sale_price',
        style: {
          color: 'maroon',
          dataLabels: {
            color: 'maroon'
          }
        }
      }
    ]
  }, {
    name: 'Median Sale Price'
  }]
}

请注意,第 select: 'value >= order_items.median_sale_price' 行以 VIEW_NAME.FIELD_NAME 格式引用了销售价格中位数字段。如需直接复制此字段值,请点击修改图表配置对话框中的字段元数据下拉菜单,然后选择相应字段名称。

将序列值与平均值或中值进行比较

在 Looker 25.0 及更高版本中,formatters.select 参数支持 mean 关键字;在 Looker 25.2 及更高版本中,formatters.select 参数支持 median 关键字。借助这些关键字,您可以将当前数据值与序列的算术平均值或中位数进行比较。

例如,假设有一个可视化图表显示了去年每个月的订单利润。以下 HighCharts JSON 会将每个柱形的颜色更改为灰色(由十六进制代码 #aaa 表示),前提是订单利润低于平均订单利润:

{
  chart: {},
  series: [{
    name: 'Order Profit',
    formatters: [{
      select: 'value < mean',
      style: {
        color: '#aaa'
      }
    }]
  }]
}

如需将序列值与中位数而非平均值进行比较,请将第 select: 'value < mean' 行更改为 select: 'value < median'

使用模板保存和分享配置

您可以将配置另存为模板,以便在其他可视化图表中重复使用,或将其作为起点与其他用户分享。

保存模板

在图表配置编辑器中修改 HighCharts JSON 时,您可以按照以下步骤将代码另存为模板:

  1. 在“图表配置编辑器”对话框中,点击另存为模板
  2. 为模板指定一个唯一名称。
  3. 输入说明,告知其他用户您的模板的用途。
  4. 根据需要修改和预览代码。
  5. 点击保存以验证您的代码。
  6. 修正所有验证错误。
  7. 再次点击保存以保存模板。

创建模板时,请谨记以下注意事项:

  • 嵌入式用户无法创建、修改或应用模板。
  • 您实例中所有有权访问图表配置编辑器的非嵌入用户都可以看到您的模板。
  • 并非所有模板都适用于所有可视化图表类型。请考虑在 Description 字段中指定模板应搭配使用的可视化图表类型。

应用模板

您可以将模板应用于当前的可视化图表。应用模板时,请谨记以下注意事项:

  • 应用模板会覆盖您在图表配置编辑器中编写的任何代码。
  • 并非所有模板都适用于所有可视化图表类型。例如,如果模板的作者为条形图编写了代码,那么该代码对折线图的影响可能不同。

如需应用模板,请按以下步骤操作:

  1. 在“图表配置编辑器”对话框中,点击已保存的模板
  2. 点击某个模板,然后点击应用模板
  3. 点击继续

Looker 将应用模板,您可以在图表配置编辑器中继续进行修改。

删除模板

如需删除模板,请按照以下步骤操作:

  1. 在“图表配置编辑器”对话框中,点击已保存的模板
  2. 点击要删除的模板旁边的三点状菜单。
  3. 点击删除

完成更改后,点击“已保存的模板”对话框中的 X 按钮,返回到“图表配置编辑器”对话框。

修改模板

如需修改模板,请按以下步骤操作:

  1. 在“图表配置编辑器”对话框中,点击已保存的模板
  2. 点击要修改的模板旁边的三点状菜单。
  3. 点击修改
  4. 完成更改后,点击保存

创建新的可视化图表类型

您可以使用图表配置编辑器创建 Looker 默认可视化类型中未包含的可视化类型。以下文章提供了一些示例,展示了您可以使用图表配置编辑器设计哪些可视化图表: