posit-dev / posit-dev/ggsql

Scale contraints for 2D facets

Open
#408 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

writer
Dominant language
Rust
Stars
554
Forks
30
Avg merge
17h 27m
Merged PRs (30d)
8

Description

Consider the following plot where x/y are free.

SELECT bill_len, bill_dep, species, island FROM ggsql:penguins
VISUALISE bill_len AS x, bill_dep AS y
DRAW point
FACET species BY island SETTING free => ['x', 'y']
LABEL
  title => 'Bill Dimensions by Species and Island',
  x => 'Bill Length (mm)',
  y => 'Bill Depth (mm)'
Image

There are a few things wrong with this plot:

  • BUG: The data-to-panel mapping is wrong.
    • Adelie penguins live on all three islands.
    • Chinstrap only on dream
    • Gentoo only on Biscoe.
  • BUG: Position scales are anchored to 0 for no apparent reason.
  • ENHANCEMENT: Position scales are free per-panel. In ggplot2, we have free scales per row/column. We should at least allow for ggplot2's behaviour of fixing x scales within a column and fixing y scales within a row to be an option.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by running the SQL visualization example in the issue and compare the rendered facet panels with the penguins data relationships. The work is done when Adelie, Chinstrap, and Gentoo appear in the correct panels, zero anchoring is removed, and the requested per-panel or ggplot2-style row/column scale behavior is available as specified.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, sql
Domain
data-visualization
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.