import Plot from 'react-plotly.js';
import { useState } from 'react';
interface ChartData {
algorithm: string;
compression_ratio: number;
encode_speed: number;
decode_speed: number;
}
interface BenchmarkChartsProps {
chartData: ChartData[];
}
export function BenchmarkCharts({ chartData }: BenchmarkChartsProps) {
const [sortByRatio, setSortByRatio] = useState(true);
if (!chartData.length) return null;
const sortedData = sortByRatio
? [...chartData].sort((a, b) => a.compression_ratio - b.compression_ratio)
: chartData;
return (
Compression Ratio
d.algorithm),
x: sortedData.map(d => d.compression_ratio),
marker: { color: '#8884d8' }
}]}
layout={{
width: 800,
height: 400,
margin: { t: 5, r: 30, l: 120, b: 30 },
xaxis: { title: 'Ratio' }
}}
config={{ displayModeBar: false }}
/>
Encode Speed (MB/s)
d.algorithm),
x: sortedData.map(d => d.encode_speed),
marker: { color: '#82ca9d' }
}]}
layout={{
width: 800,
height: 400,
margin: { t: 5, r: 30, l: 120, b: 30 },
xaxis: { title: 'MB/s' }
}}
config={{ displayModeBar: false }}
/>
Decode Speed (MB/s)
d.algorithm),
x: sortedData.map(d => d.decode_speed),
marker: { color: '#ff7300' }
}]}
layout={{
width: 800,
height: 400,
margin: { t: 5, r: 30, l: 120, b: 30 },
xaxis: { title: 'MB/s' }
}}
config={{ displayModeBar: false }}
/>
);
}