chartcoach
Catalog exploration

Source authors

Join guidelines to source references to find guidance derived from sources authored by a selected researcher.

Source-author queries answer questions such as "show me every guideline based on sources authored by Jeff Heer." Replace AUTHOR to search for another researcher.

AUTHOR=${AUTHOR:-Heer}
LIMIT=${LIMIT:-4}

Find matching sources

uvx chartcoach@latest catalog sql "
select
  id,
  year,
  source_type,
  authors_text,
  left(title, 72) as title
from \"references\"
where authors_text ilike '%${AUTHOR}%'
order by year, id
limit ${LIMIT}
" --format table

Output:

IDYearSource typeAuthorsTitle
heerCrowdsourcingGraphicalPerception20102010inproceedingsHeer, Jeffrey and Bostock, MichaelCrowdsourcing graphical perception: using mechanical turk to assess visualization design
heerTourVisualizationZoo20102010articleHeer, Jeffrey and Bostock, Michael and Ogievetsky, VadimA tour through the visualization zoo
segelNarrativeVisualizationTelling20102010articleSegel, E and Heer, JNarrative Visualization: Telling Stories with Data
linSelectingSemanticallyResonantColors20132013articleLin, Sharon and Fortuna, Julie and Kulkarni, Chinmay and Stone, Maureen and Heer, JeffreySelecting Semantically-Resonant Colors for Data Visualization

The query uses authors_text, so it catches full names and abbreviated source forms such as Heer, J.

Count the connected guidance

uvx chartcoach@latest catalog sql "
select
  count(distinct r.id) as matching_sources,
  count(distinct g.id) as guidelines
from guidelines g
join guideline_sources gs on gs.guideline_id = g.id
join \"references\" r on r.id = gs.reference_id
where r.authors_text ilike '%${AUTHOR}%'
" --format table

Output for AUTHOR=Heer:

Matching sourcesGuidelines
1147

List connected guidelines

LIMIT=${LIMIT:-6}

uvx chartcoach@latest catalog sql "
select distinct
  g.id,
  left(g.title, 80) as title,
  r.year,
  r.id as source_id
from guidelines g
join guideline_sources gs on gs.guideline_id = g.id
join \"references\" r on r.id = gs.reference_id
where r.authors_text ilike '%${AUTHOR}%'
order by r.year, r.id, g.id
limit ${LIMIT}
" --format table

Output:

Guideline idTitleYearSource id
align-compared-bars-to-a-common-baselineAlign compared bars to a common baseline2010heerCrowdsourcingGraphicalPerception2010
avoid-perfect-square-targets-in-rectangle-area-comparisonsAvoid perfect-square targets when readers must compare rectangle areas2010heerCrowdsourcingGraphicalPerception2010
set-chart-height-to-at-least-80-pixels-for-0-100-value-comparisonsSet chart height to at least 80 pixels for 0-100 value comparisons2010heerCrowdsourcingGraphicalPerception2010
set-reference-gridlines-near-20-percent-opacitySet reference gridlines near 20% opacity2010heerCrowdsourcingGraphicalPerception2010

Use JSONL with jq when another tool should consume the same rows:

uvx chartcoach@latest catalog sql "
select distinct g.id, g.title, r.year, r.id as source_id
from guidelines g
join guideline_sources gs on gs.guideline_id = g.id
join \"references\" r on r.id = gs.reference_id
where r.authors_text ilike '%${AUTHOR}%'
order by r.year, r.id, g.id
limit ${LIMIT}
" --format jsonl |
  jq -s 'map({id, title, source_id, year})'

Choose ids from the output, then join them to their source rows:

uvx chartcoach@latest catalog sql "
select
  gs.guideline_id,
  gs.reference_id as source_id,
  gs.year,
  gs.source_type,
  gs.doi
from guideline_sources gs
where gs.guideline_id in (
  'align-compared-bars-to-a-common-baseline',
  'use-semantically-resonant-hues-for-categorical-values'
)
order by gs.guideline_id, gs.year, gs.reference_id
" --format table

Output:

Guideline idSource idYearSource typeDOI
align-compared-bars-to-a-common-baselineheerCrowdsourcingGraphicalPerception20102010inproceedings10.1145/1753326.1753357
align-compared-bars-to-a-common-baselinezengReviewCollationGraphical20232023inproceedings10.1145/3544548.3581349
use-semantically-resonant-hues-for-categorical-valueslinSelectingSemanticallyResonantColors20132013article10.1111/cgf.12127

On this page