Skip to content

Commit b8b076b

Browse files
committed
Plot.pie
1 parent 7cdfd37 commit b8b076b

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

src/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export {Dot, dot, dotX, dotY} from "./marks/dot.js";
1010
export {group, groupX, groupY} from "./marks/group.js";
1111
export {Line, line, lineX, lineY} from "./marks/line.js";
1212
export {Link, link} from "./marks/link.js";
13+
export {pie} from "./marks/pie.js";
1314
export {Rect, rect, rectX, rectY} from "./marks/rect.js";
1415
export {RuleX, RuleY, ruleX, ruleY} from "./marks/rule.js";
1516
export {Text, text, textX, textY} from "./marks/text.js";

src/marks/arc.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export class Arc extends Mark {
1717
y = constant(0),
1818
innerRadius,
1919
outerRadius,
20+
padAngle,
2021
z,
2122
title,
2223
fill,
@@ -29,6 +30,7 @@ export class Arc extends Mark {
2930
const [vstroke, cstroke] = maybeColor(stroke, cfill === "none" ? "currentColor" : cfill === "currentColor" ? "white" : "none");
3031
const [vsa, csa] = maybeNumber(startAngle, 0);
3132
const [vea, cea] = maybeNumber(endAngle, 2 * Math.PI);
33+
const [vpa, cpa] = maybeNumber(padAngle, 0);
3234
const [vx, cx] = maybeNumber(x, 0);
3335
const [vy, cy] = maybeNumber(y, 0);
3436
const [vri, cri] = maybeNumber(innerRadius, 0);
@@ -43,6 +45,7 @@ export class Arc extends Mark {
4345
{name: "endAngle", value: vea, optional: true},
4446
{name: "innerRadius", value: vri, optional: true},
4547
{name: "outerRadius", value: vro, optional: true},
48+
{name: "padAngle", value: vpa, optional: true},
4649
{name: "z", value: z, optional: true},
4750
{name: "title", value: title, optional: true},
4851
{name: "fill", value: vfill, scale: "color", optional: true},
@@ -57,11 +60,12 @@ export class Arc extends Mark {
5760
this.ea = cea;
5861
this.ri = cri;
5962
this.ro = cro;
63+
this.pa = cpa;
6064
}
6165
render(
6266
I,
6367
{x, y, color},
64-
{startAngle: SA, endAngle: EA, innerRadius: RI, outerRadius: RO, x: X, y: Y, z: Z, title: L, fill: F, stroke: S},
68+
{startAngle: SA, endAngle: EA, innerRadius: RI, outerRadius: RO, padAngle: PA, x: X, y: Y, z: Z, title: L, fill: F, stroke: S},
6569
{marginTop, marginRight, marginBottom, marginLeft, width, height}
6670
) {
6771
const index = filter(I, SA, EA, F, S);
@@ -73,7 +77,8 @@ export class Arc extends Mark {
7377
.startAngle(SA ? (i => SA[i]) : this.sa)
7478
.endAngle(EA ? (i => EA[i]) : this.ea)
7579
.innerRadius(RI ? (i => r0 * RI[i]) : r0 * this.ri)
76-
.outerRadius(RO ? (i => r0 * RO[i]) : r0 * this.ro);
80+
.outerRadius(RO ? (i => r0 * RO[i]) : r0 * this.ro)
81+
.padAngle(PA ? (i => PA[i]) : this.pa);
7782

7883
return create("svg:g")
7984
.call(applyIndirectStyles, this)

src/marks/pie.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import {arc} from "./arc.js";
2+
import {pie as transformPie} from "../transforms/pie.js";
3+
4+
export function pie(data, {
5+
value,
6+
sort,
7+
sortValues,
8+
startAngle,
9+
endAngle,
10+
padAngle,
11+
...options
12+
} = {}) {
13+
const transform = transformPie();
14+
if (value !== undefined) transform.value(value);
15+
if (sort !== undefined) transform.sort(sort);
16+
if (sortValues !== undefined) transform.sortValues(sortValues);
17+
if (startAngle !== undefined) transform.startAngle(startAngle);
18+
if (endAngle !== undefined) transform.endAngle(endAngle);
19+
if (padAngle !== undefined) transform.padAngle(padAngle);
20+
21+
return arc(
22+
data,
23+
{
24+
...options,
25+
padAngle,
26+
transform
27+
}
28+
);
29+
}

src/transforms/pie.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import {pie as shapePie} from "d3-shape";
2+
3+
export const pie = shapePie;

0 commit comments

Comments
 (0)