Skip to content

Commit

Permalink
fix observablehq#263; invert ↦ reverse
Browse files Browse the repository at this point in the history
  • Loading branch information
mbostock committed Mar 30, 2021
1 parent 4f60ff5 commit c041ab2
Show file tree
Hide file tree
Showing 7 changed files with 23 additions and 23 deletions.
10 changes: 5 additions & 5 deletions src/axes.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export function autoAxisLabels(channels, scales, {x, y, fx, fy}, dimensions) {
function autoAxisLabelsX(axis, scale, channels) {
if (axis.labelAnchor === undefined) {
axis.labelAnchor = scale.type === "ordinal" ? "center"
: scale.invert ? "left"
: scale.reverse ? "left"
: "right";
}
if (axis.label === undefined) {
Expand All @@ -82,7 +82,7 @@ function autoAxisLabelsX(axis, scale, channels) {
function autoAxisLabelsY(axis, opposite, scale, channels) {
if (axis.labelAnchor === undefined) {
axis.labelAnchor = scale.type === "ordinal" ? "center"
: opposite && opposite.axis === "top" ? "bottom" // TODO scale.invert?
: opposite && opposite.axis === "top" ? "bottom" // TODO scale.reverse?
: "top";
}
if (axis.label === undefined) {
Expand All @@ -102,17 +102,17 @@ function inferLabel(channels = [], scale, axis, key) {
else if (candidate !== label) return;
}
if (candidate !== undefined) {
const {percent, invert} = scale;
const {percent, reverse} = scale;
// Ignore the implicit label for temporal scales if it’s simply “date”.
if (scale.type === "temporal" && /^(date|time|year)$/i.test(candidate)) return;
if (scale.type !== "ordinal" && (key === "x" || key === "y")) {
if (percent) candidate = `${candidate} (%)`;
if (axis.labelAnchor === "center") {
candidate = `${candidate} →`;
} else if (key === "x") {
candidate = invert ? `← ${candidate}` : `${candidate} →`;
candidate = reverse ? `← ${candidate}` : `${candidate} →`;
} else {
candidate = `${invert ? "↓ " : "↑ "}${candidate}`;
candidate = `${reverse ? "↓ " : "↑ "}${candidate}`;
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/scales/ordinal.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {reverse, sort} from "d3";
import {reverse as reverseof, sort} from "d3";
import {quantize} from "d3";
import {scaleBand, scaleOrdinal, scalePoint} from "d3";
import {
Expand Down Expand Up @@ -106,7 +106,7 @@ const schemes = new Map([
["rdylgn", scheme11(schemeRdYlGn, interpolateRdYlGn)],
["spectral", scheme11(schemeSpectral, interpolateSpectral)],

// inverted diverging (for temperature data)
// reversed diverging (for temperature data)
["burd", scheme11r(schemeRdBu, interpolateRdBu)],
["buylrd", scheme11r(schemeRdGy, interpolateRdGy)],

Expand Down Expand Up @@ -182,17 +182,17 @@ function Scheme(scheme) {
export function ScaleO(scale, channels, {
domain = inferDomain(channels),
range,
invert,
reverse,
inset
}) {
if (invert = !!invert) domain = reverse(domain);
if (reverse = !!reverse) domain = reverseof(domain);
scale.domain(domain);
if (range !== undefined) {
// If the range is specified as a function, pass it the domain.
if (typeof range === "function") range = range(domain);
scale.range(range);
}
return {type: "ordinal", invert, domain, range, scale, inset};
return {type: "ordinal", reverse, domain, range, scale, inset};
}

export function ScaleOrdinal(key, channels, {
Expand Down
18 changes: 9 additions & 9 deletions src/scales/quantitative.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {min, max, quantile, reverse} from "d3";
import {min, max, quantile, reverse as reverseof} from "d3";
import {
interpolateHcl,
interpolateHsl,
Expand Down Expand Up @@ -80,7 +80,7 @@ const schemes = new Map([
["rdylgn", interpolateRdYlGn],
["spectral", interpolateSpectral],

// inverted diverging (for temperature data)
// reversed diverging (for temperature data)
["burd", t => interpolateRdBu(1 - t)],
["buylrd", t => interpolateRdYlBu(1 - t)],

Expand Down Expand Up @@ -143,11 +143,11 @@ export function ScaleQ(key, scale, channels, {
scheme,
type,
interpolate = registry.get(key) === color ? (range !== undefined ? interpolateRgb : scheme !== undefined ? Scheme(scheme) : type === "cyclical" ? interpolateRainbow : interpolateTurbo) : round ? interpolateRound : undefined,
invert,
reverse,
inset
}) {
if (zero) domain = domain[1] < 0 ? [domain[0], 0] : domain[0] > 0 ? [0, domain[1]] : domain;
if (invert = !!invert) domain = reverse(domain);
if (reverse = !!reverse) domain = reverseof(domain);
scale.domain(domain);
if (nice) scale.nice(nice === true ? undefined : nice);

Expand All @@ -160,15 +160,15 @@ export function ScaleQ(key, scale, channels, {
if (typeof interpolate !== "function") {
interpolate = Interpolator(interpolate);
} else if (interpolate.length === 1) {
if (invert) interpolate = flip(interpolate);
if (reverse) interpolate = flip(interpolate);
interpolate = constant(interpolate);
}
scale.interpolate(interpolate);
}

if (range !== undefined) scale.range(range);
if (clamp) scale.clamp(clamp);
return {type: "quantitative", invert, domain, range, scale, inset, percent};
return {type: "quantitative", reverse, domain, range, scale, inset, percent};
}

export function ScaleLinear(key, channels, options) {
Expand All @@ -195,10 +195,10 @@ export function ScaleDiverging(key, channels, {
range,
scheme,
interpolate = registry.get(key) === color ? (range !== undefined ? interpolateRgb : scheme !== undefined ? Scheme(scheme) : interpolateRdBu) : undefined,
invert
reverse
}) {
domain = [Math.min(domain[0], pivot), pivot, Math.max(domain[1], pivot)];
if (invert = !!invert) domain = reverse(domain);
if (reverse = !!reverse) domain = reverseof(domain);

// Sometimes interpolator is named interpolator, such as "lab" for Lab color
// space; other times it is a function that takes t in [0, 1].
Expand All @@ -212,7 +212,7 @@ export function ScaleDiverging(key, channels, {
const scale = scaleDiverging(domain, interpolate);
if (clamp) scale.clamp(clamp);
if (nice) scale.nice(nice);
return {type: "quantitative", invert, domain, scale};
return {type: "quantitative", reverse, domain, scale};
}

function inferDomain(channels, f) {
Expand Down
2 changes: 1 addition & 1 deletion test/plots/letter-frequency-bar.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export default async function() {
},
y: {
domain: d3.sort(alphabet, d => -d.frequency).map(d => d.letter),
invert: true, // TODO implicitly invert when band or point in y
reverse: true, // TODO implicitly reverse when band or point in y
label: null
},
marks: [
Expand Down
2 changes: 1 addition & 1 deletion test/plots/metro-inequality-change.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default async function() {
},
color: {
type: "diverging",
invert: true
reverse: true
},
marks: [
Plot.link(data, {
Expand Down
2 changes: 1 addition & 1 deletion test/plots/seattle-temperature-band.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export default async function() {
},
color: {
scheme: "RdBu",
invert: true
reverse: true
},
marks: [
Plot.ruleX(
Expand Down
2 changes: 1 addition & 1 deletion test/plots/us-presidential-election-2020.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export default async function() {
},
color: {
type: "diverging",
invert: true
reverse: true
},
marks: [
Plot.ruleX([0]),
Expand Down

0 comments on commit c041ab2

Please sign in to comment.