Как сделать финансовый график?

Пользователь

от ebudoragina , в категории: JavaScript , 2 месяца назад

Как сделать финансовый график на react.js и d3.js чтобы было примерно как на https://finquota.com/WDAY/?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

1 ответ

A

Администратор

от admin , 2 месяца назад

@ebudoragina вот пример кода компонента React с использованием D3.js для создания простого графика линии на основе финансовых данных:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import React, { useEffect, useRef } from 'react';
import * as d3 from 'd3';

const StockChart = ({ data }) => {
  const svgRef = useRef();

  useEffect(() => {
    if (!data) return;

    const margin = { top: 20, right: 30, bottom: 30, left: 40 };
    const width = 800 - margin.left - margin.right;
    const height = 400 - margin.top - margin.bottom;

    const svg = d3.select(svgRef.current)
      .attr('width', width + margin.left + margin.right)
      .attr('height', height + margin.top + margin.bottom)
      .append('g')
      .attr('transform', `translate(${margin.left},${margin.top})`);

    const x = d3.scaleTime()
      .domain(d3.extent(data, d => d.date))
      .range([0, width]);

    const y = d3.scaleLinear()
      .domain([0, d3.max(data, d => d.price)])
      .nice()
      .range([height, 0]);

    const line = d3.line()
      .x(d => x(d.date))
      .y(d => y(d.price));

    svg.append('path')
      .datum(data)
      .attr('fill', 'none')
      .attr('stroke', 'steelblue')
      .attr('stroke-width', 1.5)
      .attr('d', line);

    svg.append('g')
      .attr('transform', `translate(0,${height})`)
      .call(d3.axisBottom(x));

    svg.append('g')
      .call(d3.axisLeft(y));

  }, [data]);

  return (
    <svg ref={svgRef}></svg>
  );
};

export default StockChart;


Это пример компонента React, который рисует график линии на основе финансовых данных, переданных через пропс data. Предполагается, что данные имеют формат массива объектов, где каждый объект представляет дату и цену.

Вызов этого компонента может выглядеть так:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import React from 'react';
import StockChart from './StockChart';

const stockData = [
  { date: new Date('2023-01-01'), price: 100 },
  { date: new Date('2023-01-02'), price: 110 },
  // Добавьте больше данных...
];

const App = () => {
  return (
    <div>
      <h1>Stock Chart</h1>
      <StockChart data={stockData} />
    </div>
  );
};

export default App;


Этот код создает простой график линии с использованием D3.js на React, отображая переданные финансовые данные. Пожалуйста, учтите, что это только базовый пример, и его можно дополнить для обработки различных аспектов, таких как интерактивность, обновление данных и т. д.