gpt4 book ai didi

javascript - 使用 TypeScript 和 D3 创建饼图

转载 作者:行者123 更新时间:2023-11-30 21:05:55 24 4
gpt4 key购买 nike

我正在尝试使用带有静态数据的 typescript 和 d3 创建饼图。但我只是得到一个空白屏幕。有人可以帮忙吗?我是 d3 和 typescript 的新手。

没有 tsconfig.json 文件。我只是使用 tsc 命令编译 .ts 文件,并将相应的 .js 文件链接到 HTML。

这是 typescript 代码:

 interface Data {
quantity: number;
category: string;
}


let testData: Data[] = [
{
quantity: 10,
category: 'a'
},
{
quantity: 20,
category: 'b'
},
{
quantity: 10,
category: 'c'
},
{
quantity: 100,
category: 'd'
},
{
quantity: 500,
category: 'e'
}
];

drawChart(testData);

function drawChart(data: Data[]) {

let width = 400,
height = 400,
radius = Math.min(width, height) / 2,
colourValues = d3.scale.category20c();

let arc = d3.svg.arc<d3.layout.pie.Arc<Data>>()
.innerRadius(radius - 70)
.outerRadius(radius - 0);

let pie = d3.layout.pie<Data>().value((d: Data):number => d.quantity);


let fill = (d: d3.layout.pie.Arc<Data>): string => colourValues(d.data.category);
let tf = (d: d3.layout.pie.Arc<Data>): string => `translate(${arc.centroid(d)})`;
let text = (d: d3.layout.pie.Arc<Data>): string => d.data.category;

let svg = d3.select('.pie-chart').append('svg')
.attr('width', width)
.attr('height', height)
.append('g')
.attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');

let g = svg.selectAll('.arc')
.data(pie(data))
.enter().append('g').attr('class', 'arc');
g.append('path').attr('d', arc).attr('fill', fill);
g.append('text').attr('transform', tf).text(text);
}

这是我的 HTML:

<head>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script src="piechart1.js"></script>
</head>
<body>
<div class="pie-chart"></div>
</body>

最佳答案

您在元素存在之前调用该函数...如果您移动脚本,执行顺序应该更好:

<head>
</head>
<body>
<div class="pie-chart"></div>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script src="piechart1.js"></script>
</body>

关于javascript - 使用 TypeScript 和 D3 创建饼图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46604158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com