📋 محتويات الصفحة
📖 الوصف
Visx (Visualization eXploration) هي مجموعة من المكونات منخفضة المستوى من Airbnb لبناء رسوم بيانية مخصصة باستخدام d3 و React. الهدف هو الجمع بين قوة d3 لإدارة البيانات مع كفاءة React في تحديث DOM. بدلاً من تقديم رسومات جاهزة، تقدم Visx مكونات أساسية (primitives) لبناء أي رسم بياني تريد مع التحكم الك...
🎯 يستخدم في
مجالات استخدام هذه الأداة
Custom data visualizations
Advanced dashboards
React-based analytics
Interactive data tools
Brand-specific chart designs
✨ المميزات
أبرز مميزات هذه الأداة
Low-level primitives (تحكم كامل)
Combines d3 math + React rendering
Lightweight (use only what you need)
Tree-shakable (modular packages)
Animated transitions
Touch events support
Tooltip components
Accessibility built-in
Works with React
Small bundle size
Actively maintained by Airbnb
⚠️ العيوب
نقاط يجب مراعاتها
React only
Learning curve متوسط-صعب
Requires d3 understanding
Not ready-made charts (تحتاج بناء)
Documentation أحياناً غير كافية
Less examples than Recharts
Boilerplate code أكثر
Not for beginners
🔄 البدائل
أدوات بديلة يمكنك استخدامها
💻 مثال على الاستخدام
كيفية استخدام هذه الأداة
import { Group } from '@visx/group';
import { LinePath } from '@visx/shape';
import { scaleTime, scaleLinear } from '@visx/scale';
import { AxisLeft, AxisBottom } from '@visx/axis';
import { curveMonotoneX } from '@visx/curve';
import { BarRounded } from '@visx/bar';
const data = [
{ x: new Date('2023-01'), y: 45 },
{ x: new Date('2023-02'), y: 90 },
{ x: new Date('2023-03'), y: 150 },
{ x: new Date('2023-04'), y: 220 },
];
// Custom Scales
const xScale = scaleTime({
domain: [Math.min(...data.map(d => d.x)), Math.max(...data.map(d => d.x))],
range: [0, 400]
});
const yScale = scaleLinear({
domain: [0, Math.max(...data.map(d => d.y))],
range: [200, 0]
});
// Line chart
function CustomLine() {
return (
<svg width={500} height={300}>
<Group top={20} left={50}>
<LinePath
data={data}
x={d => xScale(d.x)}
y={d => yScale(d.y)}
stroke="#ff6361"
strokeWidth={2}
curve={curveMonotoneX}
/>
<AxisBottom
top={220}
scale={xScale}
numTicks={5}
/>
<AxisLeft
scale={yScale}
numTicks={5}
/>
</Group>
</svg>
);
}
// Bar chart
function CustomBars() {
const barData = [
{ month: 'يناير', value: 120 },
{ month: 'فبراير', value: 200 },
{ month: 'مارس', value: 150 },
];
return (
<svg width={500} height={300}>
<Group top={20}>
{barData.map((d, i) => (
<BarRounded
key={i}
x={i * 150}
y={300 - d.value}
width={100}
height={d.value}
radius={10}
fill="#7fc97f"
/>
))}
</Group>
</svg>
);
}
📚 أدوات أخرى في Charts
قد يعجبك أيضاً
ApexCharts
⭐مكتبة رسوم بيانية JavaScript تفاعلية حديثة (Modern Interactive Charts)
Chart.js
⭐مكتبة رسوم بيانية JavaScript بسيطة وخفيفة (Simple yet Flexible JS Charts)
D3
⭐مكتبة معالجة البيانات وتصويرها منخفضة المستوى (Low-Level Data Visualization Library)
ECharts
⭐مكتبة رسوم بيانية JavaScript مفتوحة المصدر قوية (Powerful Interactive Charting Library)
Highcharts
⭐مكتبة رسوم بيانية JavaScript احترافية (Professional JavaScript Charts)
Nivo
⭐مكتبة رسوم بيانية React غنية بمكونات declarative (Rich Declarative Data Visualization)