Skip to content

Commit f08e17f

Browse files
committed
scale percent
1 parent 7e52ab6 commit f08e17f

14 files changed

+84
-77
lines changed

src/axes.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,11 @@ function inferLabel(channels = [], scale, axis, key) {
102102
else if (candidate !== label) return;
103103
}
104104
if (candidate !== undefined) {
105-
const {invert} = scale;
105+
const {percent, invert} = scale;
106106
// Ignore the implicit label for temporal scales if it’s simply “date”.
107107
if (scale.type === "temporal" && /^(date|time|year)$/i.test(candidate)) return;
108108
if (scale.type !== "ordinal" && (key === "x" || key === "y")) {
109+
if (percent) candidate = `${candidate} (%)`;
109110
if (axis.labelAnchor === "center") {
110111
candidate = `${candidate} →`;
111112
} else if (key === "x") {

src/facet.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Facet extends Mark {
6060
}
6161
const named = Object.create(null);
6262
for (const [name, channel] of channels) {
63-
if (name !== undefined) named[name] = channel.value;
63+
if (name !== undefined) Object.defineProperty(named, name, {get: () => channel.value}); // scale transform
6464
subchannels.push([undefined, channel]);
6565
}
6666
marksChannels.push(named);

src/plot.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,8 @@ export function plot(options = {}) {
3333
const {scale} = channel;
3434
if (scale !== undefined) {
3535
const scaled = scaleChannels.get(scale);
36-
const {transform} = options[scale] || {};
37-
if (transform !== undefined) {
38-
channel.value = Array.from(channel.value, transform);
39-
}
36+
const {percent, transform = percent ? x => x * 100 : undefined} = options[scale] || {};
37+
if (transform !== undefined) channel.value = Array.from(channel.value, transform);
4038
if (scaled) scaled.push(channel);
4139
else scaleChannels.set(scale, [channel]);
4240
}

src/scales/quantitative.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ export function ScaleQ(key, scale, channels, {
137137
clamp,
138138
zero,
139139
domain = (registry.get(key) === radius ? inferRadialDomain : inferDomain)(channels),
140+
percent,
140141
round,
141142
range = registry.get(key) === radius ? inferRadialRange(channels, domain) : undefined,
142143
scheme,
@@ -167,7 +168,7 @@ export function ScaleQ(key, scale, channels, {
167168

168169
if (range !== undefined) scale.range(range);
169170
if (clamp) scale.clamp(clamp);
170-
return {type: "quantitative", invert, domain, range, scale, inset};
171+
return {type: "quantitative", invert, domain, range, scale, inset, percent};
171172
}
172173

173174
export function ScaleLinear(key, channels, options) {

test/output/aaplVolume.svg

Lines changed: 10 additions & 10 deletions
Loading

test/output/mobyDickLetterRelativeFrequency.svg

Lines changed: 16 additions & 16 deletions
Loading

test/output/penguinSpeciesIslandRelative.svg

Lines changed: 12 additions & 12 deletions
Loading

0 commit comments

Comments
 (0)