analytics-metrics
Scannednpx machina-cli add skill Makiya1202/ai-agents-skills/analytics-metrics --openclawFiles (1)
SKILL.md
5.4 KB
Analytics & Metrics Dashboards
Build data visualization components with Recharts.
Quick Start
npm install recharts
Line Chart
import {
LineChart,
Line,
XAxis,
YAxis,
CartesianGrid,
Tooltip,
Legend,
ResponsiveContainer,
} from 'recharts';
const data = [
{ month: 'Jan', revenue: 4000, users: 2400 },
{ month: 'Feb', revenue: 3000, users: 1398 },
{ month: 'Mar', revenue: 2000, users: 9800 },
{ month: 'Apr', revenue: 2780, users: 3908 },
];
function RevenueChart() {
return (
<ResponsiveContainer width="100%" height={400}>
<LineChart data={data}>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="month" />
<YAxis />
<Tooltip />
<Legend />
<Line
type="monotone"
dataKey="revenue"
stroke="#3b82f6"
strokeWidth={2}
/>
<Line
type="monotone"
dataKey="users"
stroke="#10b981"
strokeWidth={2}
/>
</LineChart>
</ResponsiveContainer>
);
}
Bar Chart
import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer } from 'recharts';
function SalesChart({ data }) {
return (
<ResponsiveContainer width="100%" height={300}>
<BarChart data={data}>
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Bar dataKey="sales" fill="#3b82f6" radius={[4, 4, 0, 0]} />
</BarChart>
</ResponsiveContainer>
);
}
KPI Card
interface KPICardProps {
title: string;
value: string | number;
change: number;
trend: 'up' | 'down';
icon?: React.ReactNode;
}
function KPICard({ title, value, change, trend, icon }: KPICardProps) {
const isPositive = trend === 'up';
return (
<div className="bg-white rounded-lg p-6 shadow-sm border">
<div className="flex items-center justify-between">
<p className="text-sm font-medium text-gray-500">{title}</p>
{icon && <div className="text-gray-400">{icon}</div>}
</div>
<div className="mt-2">
<p className="text-3xl font-semibold text-gray-900">{value}</p>
<div className="mt-2 flex items-center">
<span
className={`text-sm font-medium ${
isPositive ? 'text-green-600' : 'text-red-600'
}`}
>
{isPositive ? '↑' : '↓'} {Math.abs(change)}%
</span>
<span className="ml-2 text-sm text-gray-500">vs last period</span>
</div>
</div>
</div>
);
}
Dashboard Layout
function Dashboard() {
return (
<div className="p-6 space-y-6">
{/* KPI Grid */}
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
<KPICard
title="Total Revenue"
value="$45,231"
change={12.5}
trend="up"
/>
<KPICard
title="Active Users"
value="2,345"
change={8.2}
trend="up"
/>
<KPICard
title="Conversion Rate"
value="3.2%"
change={-2.1}
trend="down"
/>
<KPICard
title="Avg. Order Value"
value="$142"
change={5.4}
trend="up"
/>
</div>
{/* Charts Grid */}
<div className="grid grid-cols-1 lg:grid-cols-2 gap-6">
<div className="bg-white rounded-lg p-6 shadow-sm border">
<h3 className="text-lg font-medium mb-4">Revenue Over Time</h3>
<RevenueChart />
</div>
<div className="bg-white rounded-lg p-6 shadow-sm border">
<h3 className="text-lg font-medium mb-4">Sales by Category</h3>
<SalesChart data={salesData} />
</div>
</div>
</div>
);
}
Pie Chart
import { PieChart, Pie, Cell, Tooltip, Legend, ResponsiveContainer } from 'recharts';
const COLORS = ['#3b82f6', '#10b981', '#f59e0b', '#ef4444'];
function DistributionChart({ data }) {
return (
<ResponsiveContainer width="100%" height={300}>
<PieChart>
<Pie
data={data}
cx="50%"
cy="50%"
innerRadius={60}
outerRadius={100}
dataKey="value"
label
>
{data.map((_, index) => (
<Cell key={index} fill={COLORS[index % COLORS.length]} />
))}
</Pie>
<Tooltip />
<Legend />
</PieChart>
</ResponsiveContainer>
);
}
Formatting Utilities
export function formatNumber(value: number): string {
if (value >= 1_000_000) {
return `${(value / 1_000_000).toFixed(1)}M`;
}
if (value >= 1_000) {
return `${(value / 1_000).toFixed(1)}K`;
}
return value.toLocaleString();
}
export function formatCurrency(value: number, currency = 'USD'): string {
return new Intl.NumberFormat('en-US', {
style: 'currency',
currency,
minimumFractionDigits: 0,
maximumFractionDigits: 0,
}).format(value);
}
export function formatPercent(value: number): string {
return `${value >= 0 ? '+' : ''}${value.toFixed(1)}%`;
}
Resources
- Recharts: https://recharts.org
- D3.js: https://d3js.org
Source
git clone https://github.com/Makiya1202/ai-agents-skills/blob/master/skills/analytics-metrics/SKILL.mdView on GitHub Overview
Create data visualization dashboards using Recharts. This skill enables you to build line charts, bar charts, and KPI cards to display metrics and trends in analytics dashboards. It emphasizes practical components and layouts for KPI displays and data visualization.
How This Skill Works
Install recharts, import the chart components, and bind your data to LineChart, BarChart, or KPI Card components. Render charts inside a ResponsiveContainer for responsive layouts, and enable Tooltip and Legend for clarity.
When to Use It
- When you need a trend line over time, such as revenue or user growth.
- When you want to compare categories or segments with a bar chart (e.g., sales by category).
- When displaying a key metric with a value, change, and trend (KPI card).
- When assembling a dashboard layout that combines KPIs and charts.
- When rapidly prototyping analytics dashboards in a React app using Recharts.
Quick Start
- Step 1: npm install recharts
- Step 2: Import LineChart, BarChart, KPI Card components and create a data array
- Step 3: Render a simple chart inside a ResponsiveContainer, add Tooltip and Legend
Best Practices
- Choose the right chart type for the data (line for trends, bar for comparisons).
- Wrap charts in a ResponsiveContainer to ensure responsive behavior.
- Include Tooltips and Legend to improve interpretability of the data.
- Design KPI cards with clear, color-coded trend indicators (up vs down).
- Optimize data payloads and consider memoization to improve rendering performance.
Example Use Cases
- Revenue and Users line chart showing trends over months.
- Sales by Category bar chart for category performance.
- KPI Card displaying Total Revenue with a positive change and arrow indicator.
- Revenue Over Time dashboard combining a line chart and KPI metrics.
- Dashboard Layout featuring a KPI grid and multiple charts arranged responsively.
Frequently Asked Questions
Add this skill to your agents