reactjs - 如何在反应中使用 D3.js
问题描述
我想在我的 ReactJS 应用程序中使用 D3 绘制图表。我观看了一些 youtube 视频并阅读了网络上的一些教程,但没有任何帮助。每次出现错误或我看不到结果。这是我最新的代码。这段代码没有错误,但我只能看到一些没有我试图绘制的圆环图的数字。
import React from 'react';
import {withStyles} from '@material-ui/core/styles';
import { arc as d3Arc, pie as d3Pie } from 'd3-shape';
import { csvParse } from 'd3-dsv';
import * as d3 from 'd3';
import dataCsv from '../../static/book1.csv';
const styles = theme =>({
arc:{
background:'red',
fill:'blue',
color:'red',
}
});
const width = 500,
height = 500,
radius = Math.min(width, height) / 2;
const color = d3.scaleOrdinal().range([
'#98abc5',
'#d0743c',
]);
const arc = d3.arc()
.outerRadius(radius - 10)
.innerRadius(radius - 70);
const pie = d3Pie().sort(null).value(function(d) {
return d.population;
});
const data = pie(
csvParse(dataCsv, d => {
d.population = +d.population;
return d;
})
);
class DonutChart extends React.Component{
constructor(){
super();
}
render(){
const {classes} = this.props;
return(
<svg width={width} height={height}>
<g transform={`translate(${width / 2}, ${height / 2})`}>
{data.map(d =>(
<g className={classes.arc} key={`a${d.type}`}>
<path d={arc(d)} fill={color(d.color)} />
<text transform={`translate(${arc.centroid(d)})`} dy=".35em">
{d.value}
</text>
</g>
))}
</g>
</svg>
);
}
}
export default withStyles(styles)(DonutChart);
解决方案
推荐阅读
- swift - spritekit 如何选择性地缩放节点
- python - 如何使用 joblib 和 scikitlearn 并行交叉验证
- javascript - redux-thunk 中间件 multiple => Syntex
- python - django webapp 和 django-rest-framework 可以一起生活吗?
- asp.net-mvc - Javascript 发布请求回调,从 .NET MVC 控制器重定向
- .net-core - .NET Core:代码合同方法目前已关闭?
- multithreading - 使用 goroutine 运行同一程序的另一个实例?
- c# - Angular 6 HttpClient Post 未命中 DotNet Core 2.2 API 控制器中的 API Post 方法
- javascript - setInterval 在 VueJs 中更改样式时仅工作一次
- crosstab - 如何在交叉表报告表上以百分比总计格式设置十进制数字格式