Skip to content

Fitness Tracking Dashboard

A comprehensive visualization dashboard showcasing various chart types using personal fitness data. This example demonstrates how different mark types can reveal insights from the same dataset.

Daily Activity Timeline

Line chart showing activity levels throughout the tracking period.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: line
engine: plot
title: Daily Activity Level Trend
width: 800
height: 400
marks:
  - type: line
    configuration:
      x: day
      y: activity_level
      stroke: "#3498db"
      strokeWidth: 2.5
      tip: true
  - type: dot
    configuration:
      x: day
      y: activity_level
      fill: "#2980b9"
      r: 3
x:
  label: Day of Month
y:
  label: Activity Level (1-10)
grid: true

Calories vs Steps Scatter

Scatter plot revealing the relationship between steps taken and calories burned.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: scatter
engine: plot
title: Calories Burned vs Steps Taken
width: 700
height: 500
marks:
  - type: dot
    configuration:
      x: steps
      y: calories
      r: 4
      fill: workout_type
      tip: true
x:
  label: Steps Taken
y:
  label: Calories Burned
color:
  legend: true
grid: true

Workout Duration by Type

Bar chart comparing workout durations across different exercise types.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: bar
engine: plot
title: Average Workout Duration by Type
width: 700
height: 400
marks:
  - type: barY
    configuration:
      x: workout_type
      y: duration
      fill: workout_type
      tip: true
x:
  label: Workout Type
y:
  label: Duration (minutes)
color:
  legend: true

Heart Rate Distribution

Box plot showing heart rate distribution during different workout types.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: boxplot
x: workout_type
y: heart_rate
engine: plot
title: Heart Rate Distribution by Workout Type
width: 700
height: 450
marks:
  - type: boxY
    configuration:
      x: workout_type
      y: heart_rate
      fill: workout_type
      tip: true
scales:
  x:
    label: Workout Type
  y:
    label: Heart Rate (bpm)
  color:
    legend: true

Weekly Progress Area Chart

Stacked area showing cumulative progress metrics over time.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: area
engine: plot
title: Cumulative Fitness Metrics
width: 800
height: 400
marks:
  - type: areaY
    configuration:
      x: day
      y: steps
      fill: "#e74c3c"
      fillOpacity: 0.6
      tip: true
  - type: line
    configuration:
      x: day
      y: steps
      stroke: "#c0392b"
      strokeWidth: 2
x:
  label: Day
y:
  label: Cumulative Steps (scaled)
grid: true

Performance Heatmap

Cell visualization showing intensity patterns across days and workout types.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: heatmap
x: day
y: workout_type
color: activity_level
engine: plot
title: Workout Intensity Heatmap
width: 800
height: 400
marks:
  - type: cell
    configuration:
      x: day
      y: workout_type
      fill: activity_level
      tip: true
scales:
  x:
    label: Day of Month
  y:
    label: Workout Type
  color:
    scheme: reds
    legend: true

Recovery Time Analysis

Rule marks showing target zones with actual performance overlay.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: scatter
x: day
y: heart_rate
engine: plot
title: Heart Rate Zones
width: 700
height: 400
marks:
  - type: ruleY
    configuration:
      y: 120
      stroke: "#27ae60"
      strokeWidth: 1
      strokeDasharray: "4,4"
  - type: ruleY
    configuration:
      y: 150
      stroke: "#f39c12"
      strokeWidth: 1
      strokeDasharray: "4,4"
  - type: ruleY
    configuration:
      y: 170
      stroke: "#e74c3c"
      strokeWidth: 1
      strokeDasharray: "4,4"
  - type: dot
    configuration:
      x: day
      y: heart_rate
      fill: workout_type
      r: 4
      tip: true
scales:
  x:
    label: Day
  y:
    label: Heart Rate (bpm)
  color:
    legend: true
grid: true

Text Annotations

Highlighting key achievements with text marks.

View Source
data:
  source: [
    {"day": 5, "value": 95, "label": "Personal Best!"},
    {"day": 15, "value": 92, "label": "Great Form"},
    {"day": 25, "value": 88, "label": "Strong Finish"}
  ]
type: scatter
x: day
y: value
engine: plot
title: Performance Highlights
width: 700
height: 400
marks:
  - type: dot
    configuration:
      x: day
      y: value
      fill: "#9b59b6"
      r: 8
  - type: text
    configuration:
      x: day
      y: value
      text: label
      dy: -15
      fontSize: 12
      fontWeight: bold
scales:
  x:
    label: Day
  y:
    label: Performance Score
grid: true

Auto Mark - Smart Visualization

Let Observable Plot automatically choose the best visualization.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
engine: plot
title: Auto-Detected Visualization
width: 700
height: 400
marks:
  - type: auto
    configuration:
      x: steps
      y: calories
      fill: workout_type
x:
  label: Steps
y:
  label: Calories
color:
  legend: true

Multi-Mark Composition

Combining multiple mark types for rich insights.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
engine: plot
title: Comprehensive Activity Analysis
width: 800
height: 500
marks:
  - type: areaY
    configuration:
      x: day
      y: activity_level
      fill: "#3498db"
      fillOpacity: 0.3
  - type: line
    configuration:
      x: day
      y: activity_level
      stroke: "#2980b9"
      strokeWidth: 2
  - type: dot
    configuration:
      x: day
      y: activity_level
      r: duration
      fill: workout_type
      tip: true
x:
  label: Day of Month
y:
  label: Activity Level
color:
  legend: true
scales:
  r:
    range: [2, 12]
grid: true

Regression Analysis

Linear regression showing the relationship between steps and calories.

View Source
data:
  source: [
    {"day": 1, "steps": 8543, "calories": 342, "duration": 45, "heart_rate": 128, "activity_level": 7, "workout_type": "Running"},
    {"day": 2, "steps": 12456, "calories": 498, "duration": 60, "heart_rate": 145, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 3, "steps": 6234, "calories": 267, "duration": 30, "heart_rate": 118, "activity_level": 6, "workout_type": "Walking"},
    {"day": 4, "steps": 10987, "calories": 445, "duration": 55, "heart_rate": 138, "activity_level": 8, "workout_type": "Running"},
    {"day": 5, "steps": 15234, "calories": 612, "duration": 75, "heart_rate": 152, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 6, "steps": 5678, "calories": 245, "duration": 25, "heart_rate": 112, "activity_level": 5, "workout_type": "Walking"},
    {"day": 7, "steps": 9876, "calories": 398, "duration": 50, "heart_rate": 135, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 8, "steps": 11234, "calories": 456, "duration": 58, "heart_rate": 142, "activity_level": 8, "workout_type": "Running"},
    {"day": 9, "steps": 7890, "calories": 324, "duration": 35, "heart_rate": 122, "activity_level": 7, "workout_type": "Walking"},
    {"day": 10, "steps": 13456, "calories": 542, "duration": 68, "heart_rate": 148, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 11, "steps": 8901, "calories": 367, "duration": 42, "heart_rate": 130, "activity_level": 7, "workout_type": "Running"},
    {"day": 12, "steps": 6543, "calories": 278, "duration": 28, "heart_rate": 115, "activity_level": 6, "workout_type": "Walking"},
    {"day": 13, "steps": 10234, "calories": 423, "duration": 52, "heart_rate": 136, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 14, "steps": 14567, "calories": 587, "duration": 72, "heart_rate": 150, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 15, "steps": 9234, "calories": 382, "duration": 48, "heart_rate": 133, "activity_level": 8, "workout_type": "Running"},
    {"day": 16, "steps": 7123, "calories": 298, "duration": 32, "heart_rate": 120, "activity_level": 6, "workout_type": "Walking"},
    {"day": 17, "steps": 11890, "calories": 478, "duration": 62, "heart_rate": 144, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 18, "steps": 8456, "calories": 352, "duration": 44, "heart_rate": 127, "activity_level": 7, "workout_type": "Running"},
    {"day": 19, "steps": 6789, "calories": 287, "duration": 30, "heart_rate": 116, "activity_level": 6, "workout_type": "Walking"},
    {"day": 20, "steps": 12678, "calories": 512, "duration": 65, "heart_rate": 147, "activity_level": 9, "workout_type": "Running"},
    {"day": 21, "steps": 9567, "calories": 395, "duration": 50, "heart_rate": 134, "activity_level": 8, "workout_type": "Yoga"},
    {"day": 22, "steps": 13890, "calories": 558, "duration": 70, "heart_rate": 149, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 23, "steps": 7456, "calories": 312, "duration": 38, "heart_rate": 124, "activity_level": 7, "workout_type": "Walking"},
    {"day": 24, "steps": 10567, "calories": 437, "duration": 54, "heart_rate": 139, "activity_level": 8, "workout_type": "Running"},
    {"day": 25, "steps": 15678, "calories": 628, "duration": 78, "heart_rate": 154, "activity_level": 10, "workout_type": "Cycling"},
    {"day": 26, "steps": 8234, "calories": 342, "duration": 43, "heart_rate": 129, "activity_level": 7, "workout_type": "Yoga"},
    {"day": 27, "steps": 11456, "calories": 467, "duration": 60, "heart_rate": 143, "activity_level": 8, "workout_type": "Running"},
    {"day": 28, "steps": 6890, "calories": 291, "duration": 31, "heart_rate": 117, "activity_level": 6, "workout_type": "Walking"},
    {"day": 29, "steps": 13234, "calories": 534, "duration": 67, "heart_rate": 146, "activity_level": 9, "workout_type": "Cycling"},
    {"day": 30, "steps": 9890, "calories": 408, "duration": 51, "heart_rate": 137, "activity_level": 8, "workout_type": "Running"}
  ]
type: scatter
x: steps
y: calories
engine: plot
title: Steps vs Calories with Trend Line
width: 700
height: 500
marks:
  - type: dot
    configuration:
      x: steps
      y: calories
      fill: workout_type
      fillOpacity: 0.6
      r: 4
  - type: linearRegressionY
    configuration:
      x: steps
      y: calories
      stroke: "#e74c3c"
      strokeWidth: 3
scales:
  x:
    label: Steps Taken
  y:
    label: Calories Burned
  color:
    legend: true
grid: true

Key Insights

This dashboard demonstrates:

  • Line charts for temporal trends
  • Scatter plots for correlation analysis
  • Bar charts for categorical comparisons
  • Box plots for distribution analysis
  • Area charts for cumulative metrics
  • Cell/heatmaps for pattern detection
  • Rule marks for reference lines and zones
  • Text marks for annotations
  • Auto marks for intelligent defaults
  • Multi-mark compositions for comprehensive analysis
  • Regression analysis for trend prediction

The fitness dataset contains 30 days of activity tracking with metrics including steps, calories, duration, heart rate, activity level, and workout type.

Released under the MIT License. Built by Boundary Lab.