Как сделать финансовый график на react.js и d3.js чтобы было примерно как на https://finquota.com/WDAY/?
@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, отображая переданные финансовые данные. Пожалуйста, учтите, что это только базовый пример, и его можно дополнить для обработки различных аспектов, таких как интерактивность, обновление данных и т. д.