📊 مميز

Visx

مجموعة primitives للرسوم البيانية في React (Collection of expressive, low-level visualization primitives)

(4/5)
👁️ 3 مشاهدة
📅 02 Jul 2026
🌐 عام

مستوى الخبرة المطلوب:

⚡ متوسط 🚀 محترف
🔗 زيارة الموقع الرسمي
4
تقييم المستخدمين
التصنيف 📊 Charts
المشاهدات 3
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

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

🔄 البدائل

أدوات بديلة يمكنك استخدامها

Recharts
Nivo
Victory
D3

💻 مثال على الاستخدام

كيفية استخدام هذه الأداة

Example Code
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

قد يعجبك أيضاً