Skip to content

Commit

Permalink
Reduce overlapping of labels
Browse files Browse the repository at this point in the history
Relates to #5
  • Loading branch information
sophiamersmann committed Feb 5, 2021
1 parent 7ec5d05 commit 702284d
Showing 1 changed file with 27 additions and 10 deletions.
37 changes: 27 additions & 10 deletions src/components/AxisX.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,46 @@
import { innerRadius } from '../stores/dimensions';
export let selectedData = [];
let labels = [];
$: {
const grouped = rollups(
selectedData,
(v) => v[0].angle,
(d) => [d.data.year, d.data.volume].join('/')
);
$: labels = rollups(
selectedData,
(v) => v[0].angle,
(d) => [d.data.year, d.data.volume].join('/')
);
let yearsDone = new Set();
labels = grouped.map(([text, angle]) => {
const split = text.split('/')
const year = +split[0];
if (yearsDone.has(year)) {
text = split[1];
} else {
text = text.slice(2);
}
yearsDone.add(year);
return { text, angle };
});
}
</script>

<g class="axis axis-x">
<g class="axis-lines">
{#each labels as [, angle]}
<AxisXLine {angle} />
{#each labels as label}
<AxisXLine angle={label.angle} />
{/each}
</g>
<g class="axis-labels">
{#each labels as [text, angle], i}
{#each labels as label, i}
<Label
pathId={`path-axis-x-label-${i}`}
radius={$innerRadius}
{angle}
angle={label.angle}
hanging
>
{text.slice(2)}
{label.text}
</Label>
{/each}
</g>
Expand Down

0 comments on commit 702284d

Please sign in to comment.