14  Ranking

Bar charts and their variants – comparing quantities across categories.

(ns plotje-book.ranking
  (:require
   ;; Kindly -- notebook rendering protocol
   [scicloj.kindly.v4.kind :as kind]
   ;; Rdatasets -- standard datasets
   [scicloj.metamorph.ml.rdatasets :as rdatasets]
   ;; Plotje -- composable plotting
   [scicloj.plotje.api :as pj]))
(def sales {:product [:widget :gadget :gizmo :doohickey]
            :revenue [120 340 210 95]})

Bar Chart

Count occurrences of a categorical column.

(-> (rdatasets/datasets-iris)
    (pj/lay-bar :species))
speciessetosaversicolorvirginica05101520253035404550

Colored Bar Chart

Grouped (dodged) bars – count by day, colored by smoking status.

(-> (rdatasets/reshape2-tips)
    (pj/lay-bar :day {:color :smoker}))
daysmokerNoYesSunSatThurFri01020304050

Stacked Bar Chart

Same data, stacked instead of dodged.

(-> (rdatasets/reshape2-tips)
    (pj/lay-bar :day {:position :stack :color :smoker}))
daysmokerNoYesSunSatThurFri0102030405060708090

Stacked Bar (Proportions)

100% stacked bars – shows proportions instead of counts.

(-> (rdatasets/palmerpenguins-penguins)
    (pj/lay-bar :island {:position :fill :color :species}))
islandspeciesAdelieGentooChinstrapTorgersenBiscoeDream0.00.10.20.30.40.50.60.70.80.91.0

Horizontal Bar Chart

Flip the bar chart for horizontal orientation.

(-> (rdatasets/datasets-iris)
    (pj/lay-bar :species)
    (pj/coord :flip))
species05101520253035404550setosaversicolorvirginica

(pj/coord :flip) draws categories bottom-to-top in data order, matching ggplot2’s coord_flip(). For a ranking chart where the biggest value should appear at the top, sort the data ascending before plotting, e.g. (tc/order-by data [:value] [:asc]).

Horizontal Colored Bars

Colored bars, flipped.

(-> (rdatasets/reshape2-tips)
    (pj/lay-bar :day {:color :time})
    (pj/coord :flip))
daytimeDinnerLunch0102030405060708090SunSatThurFri

Value Bar

Pre-computed y values (no counting).

(-> sales
    (pj/lay-value-bar :product :revenue))
revenueproductwidgetgadgetgizmodoohickey050100150200250300350

Value Bar (Horizontal)

Flip for horizontal orientation.

(-> sales
    (pj/lay-value-bar :product :revenue)
    (pj/coord :flip))
productrevenue050100150200250300350widgetgadgetgizmodoohickey

Lollipop

Stem + dot – a lighter alternative to bar charts.

(-> sales
    (pj/lay-lollipop :product :revenue))
revenueproductwidgetgadgetgizmodoohickey050100150200250300350

Lollipop (Horizontal)

Flipped for horizontal orientation.

(-> sales
    (pj/lay-lollipop :product :revenue)
    (pj/coord :flip))
productrevenue050100150200250300350widgetgadgetgizmodoohickey

What’s Next

source: notebooks/plotje_book/ranking.clj