Skip to content

Kibana 可视化类型:折线图、柱状图、饼图、热力图、地图

数据可视化是将数字变成洞察的过程。Kibana 提供了丰富的可视化类型,让你能用最合适的方式展示数据。

1. 可视化类型概览

┌─────────────────────────────────────────────────────────────┐
│                    Kibana 可视化类型                         │
│                                                               │
│   ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐      │
│   │   Line  │  │  Area   │  │   Bar   │  │   Pie   │      │
│   │ 折线图  │  │ 面积图  │  │ 柱状图  │  │  饼图   │      │
│   └─────────┘  └─────────┘  └─────────┘  └─────────┘      │
│                                                               │
│   ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐      │
│   │  Heat   │  │  Gauge  │  │ Metric  │  │  Map    │      │
│   │  热力图 │  │ 仪表盘  │  │ 指标卡  │  │  地图   │      │
│   └─────────┘  └─────────┘  └─────────┘  └─────────┘      │
│                                                               │
│   ┌─────────┐  ┌─────────┐  ┌─────────┐                   │
│   │  Table  │  │  Goal   │  │ Timelion │                   │
│   │ 表格    │  │ 目标图  │  │ 时序分析 │                   │
│   └─────────┘  └─────────┘  └─────────┘                   │
│                                                               │
└─────────────────────────────────────────────────────────────┘

2. 折线图(Line)

2.1 适用场景

  • 趋势分析:销售额随时间变化
  • 对比分析:多个指标的时间对比
  • 异常检测:发现数据中的异常波动

2.2 配置示例

配置步骤:

1. 选择索引模式
   └─→ sales-*

2. Y 轴(Metrics)
   └─→ Sum of amount(销售金额)

3. X 轴(Buckets)
   └─→ Date Histogram by @timestamp
   └─→ Interval: Daily

4. 可选:添加分组
   └─→ Split Series → Terms → category

2.3 图表样式

Line 图表样式选项:

┌─────────────────────────────────────────────────────────────┐
│  Options                                                    │
│                                                             │
│  Style                                                      │
│  ├─○ Smooth Line(平滑曲线)                                │
│  ├─○ Stepped(阶梯图)                                     │
│  └─○ Linear(直线)                                         │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐    │
│  │  ☑ Show Dots(显示数据点)                          │    │
│  │  ☑ Show Value(显示数值标签)                       │    │
│  │  Line Width: ━━━                                     │    │
│  │  Point Size: ●●○                                   │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                             │
│  Axis                                                       │
│  ├─ Position: Left / Right                                │
│  └─ Scale: Linear / Log                                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

2.4 多线图

多条折线的配置:

Y 轴:
├─ Metrics 1: Sum of revenue
├─ Metrics 2: Sum of cost
└─ Metrics 3: Average of margin

效果:三条线在同一图表中展示

3. 面积图(Area)

3.1 适用场景

  • 累积量展示:总销售额的累积趋势
  • 占比变化:各部分占总体的比例变化
  • 区域分析:数据的集中区域

3.2 面积图变体

面积图样式:

1. Stacked Area(堆叠面积图)
   └─→ 各部分堆叠显示,适合展示累积量

2. Unstacked Area(不堆叠面积图)
   └─→ 各部分独立显示,适合对比分析

3. Percentage Area(百分比面积图)
   └─→ 各部分占比,恒定为 100%

3.3 配置示例

配置:

Y 轴:Sum of orders
X 轴:Date Histogram by @timestamp
分组:Split Area → Terms → region

效果:不同地区的订单累积趋势

4. 柱状图(Bar)

4.1 适用场景

  • 分类对比:不同产品的销量对比
  • 排名分析:Top 10 服务
  • 分布展示:各区间的数量分布

4.2 柱状图类型

柱状图类型:

1. Vertical Bar(垂直柱状图)
   └─→ X 轴为分类,Y 轴为数值

2. Horizontal Bar(水平柱状图)
   └─→ Y 轴为分类,X 轴为数值
   └─→ 适合展示排名(Top 10)

3. Stacked Bar(堆叠柱状图)
   └─→ 展示部分与整体的关系

4.3 配置示例

配置(水平柱状图):

Y 轴(Buckets):
├─ Split Rows → Terms → service
└─ Order: Descending, Size: 10

X 轴(Metrics):
└─ Count(请求数量)

效果:Top 10 服务排名

5. 饼图(Pie)

5.1 适用场景

  • 占比分析:各分类占总体的比例
  • 简单对比:少量分类的对比
  • 快速洞察:一眼看出最大/最小的分类

5.2 配置示例

配置:

1. Slice / Bucket:
   └─→ Terms → category
   └─→ Order: Descending
   └─→ Size: 5

2. Options:
   ├─ Donut(环形图)☑
   └─ Show Labels(显示标签)☑

效果:显示前 5 大分类的占比

5.3 多层饼图

配置:

1. Parent Bucket:
   └─→ Terms → category

2. Child Bucket:
   └─→ Terms → product_name

效果:先按分类分大块,再按产品分小块

6. 热力图(Heat Map)

6.1 适用场景

  • 密度分析:数据在两个维度上的分布密度
  • 时间分析:某时段某类别的活跃程度
  • 相关性分析:两个指标的相关性

6.2 配置示例

配置:

X 轴:Buckets → Terms → hour_of_day
Y 轴:Buckets → Terms → day_of_week
Value:Count

效果:展示一周各时段的访问密度
颜色越深表示访问量越大

6.3 颜色配置

颜色方案:

1. 单一颜色渐变
   └─→ 白色 → 红色(由浅到深)

2. 对比色渐变
   └─→ 绿色 → 黄色 → 红色

3. 自定义
   └─→ 设置任意颜色序列

调整:Color Schema 选择

7. 仪表盘(Gauge)

7.1 适用场景

  • 实时监控:当前状态一目了然
  • KPI 展示:关键指标达标情况
  • 阈值告警:超出范围的视觉警告

7.2 配置示例

配置:

1. Metrics:
   └─→ Average of response_time

2. Options:
   ├─ Gauge Type: Arc(弧形) / Vertical(垂直)
   ├─ Color Range:
   │   ├─ 0 - 1000ms → 绿色(正常)
   │   ├─ 1000 - 3000ms → 黄色(警告)
   │   └─ 3000+ ms → 红色(异常)
   └─ Auto Extend Color Range ☑

7.3 仪表盘效果

效果示意:

      ╭──────────╮
     ╱    250     ╲        ← 当前值
    ╱   ms        ╲
   ╱──────────────╲
  │ ▓▓▓▓▓▓▓▓░░░░░ │
  │ 0    500   1000│        ← 刻度

绿色:正常 | 黄色:警告 | 红色:异常

8. 指标卡(Metric)

8.1 适用场景

  • KPI 展示:一目了然的数字
  • Dashboard 装饰:提供关键数据点
  • 趋势指示:与过去对比

8.2 配置示例

配置:

1. Metrics:
   └─→ Count / Average / Sum / ...

2. Options:
   ├─ Label: "Total Revenue"
   ├─ Format: Currency (¥)
   ├─ Decimals: 0
   └─ Show Trend: ☑
       └─ Compare to: 7 days ago

8.3 样式模板

指标卡样式选项:

1. 简洁数字
   └─→ 123,456

2. 数值 + 标签
   └─→ 123,456 │ 总订单

3. 数值 + 趋势
   └─→ 123,456 ↑ 15%

4. 大数字 + 背景色
   └─→ 突出显示关键指标

9. 地图(Maps)

9.1 支持的地图类型

类型说明适用场景
Choropleth区域着色图国家/地区统计
Point点位图事件位置标记
Heatmap热力图密度分布
Line轨迹图路径/路线

9.2 配置示例

配置(Choropleth 地图):

1. 地图服务:
   └─→ World Countries(世界国家)

2. Join Field:
   └─→ geoip.country_code3 → ISO 3166-1 alpha-3

3. 聚合:
   └─→ Sum of amount

效果:按国家显示销售额
颜色深浅代表销售额大小

10. 数据表格(Data Table)

10.1 适用场景

  • 明细展示:需要看具体数据
  • 排序分析:按多个维度排序
  • 导出数据:生成数据报表

10.2 配置示例

配置:

1. Buckets:
   └─→ Split Rows → Terms → service
   └─→ Sort: Descending by Count
   └─→ Size: 10

2. Metrics:
   └─→ Count
   └─→ Average of response_time
   └─→ Max of bytes

效果:
┌────────────┬──────────┬──────────┬──────────┐
│ Service    │ Requests │ Avg RT   │ Max Size │
├────────────┼──────────┼──────────┼──────────┤
│ user-svc   │ 123,456  │ 250ms    │ 50KB     │
│ order-svc  │ 98,765   │ 350ms    │ 100KB    │
│ ...        │          │          │          │
└────────────┴──────────┴──────────┴──────────┘

11. 组合可视化

11.1 Vega 可视化

Vega 是一种声明式语法,可以创建 Kibana 内置不支持的自定义可视化:

java
// Vega 示例:自定义散点图
{
  "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
  "data": {
    "url": {
      "%context%": true,
      "index": "sales-*",
      "body": {
        "aggs": {
          "points": {
            "terms": {
              "field": "product_id",
              "size": 1000
            },
            "aggs": {
              "x": { "avg": { "field": "price" } },
              "y": { "avg": { "field": "quantity" } }
            }
          }
        }
      }
    }
  },
  "mark": "point",
  "encoding": {
    "x": { "field": "x", "type": "quantitative" },
    "y": { "field": "y", "type": "quantitative" }
  }
}

12. 选择合适可视化类型的指南

选择建议:

需要展示趋势?
├─→ 折线图 ✓
└─→ 面积图 ✓

需要对比分类?
├─→ 柱状图 ✓
├─→ 水平柱状图 ✓(排名)
└─→ 饼图 ✓(少量分类)

需要展示占比?
├─→ 饼图 ✓
├─→ 堆叠面积图 ✓
└─→ 堆叠柱状图 ✓

需要展示分布?
├─→ 热力图 ✓
└─→ 直方图 ✓

需要单一数值?
├─→ 指标卡 ✓
└─→ 仪表盘 ✓

需要地理位置?
└─→ 地图 ✓

总结

Kibana 可视化类型丰富,选择原则:

  1. 趋势分析:折线图、面积图
  2. 对比分析:柱状图、饼图
  3. 分布分析:热力图、直方图
  4. KPI 展示:指标卡、仪表盘
  5. 地理分析:地图

留给你的问题

假设你要创建一个网站监控仪表板,需要展示:

  1. 当前在线用户数(单一数值)
  2. 过去 24 小时的请求趋势
  3. 各服务的请求占比
  4. 各地区的访问分布
  5. 响应时间的分布

你会分别选择哪些可视化类型?为什么?

基于 VitePress 构建