class: center, middle # Fixing time series ## are time series an exception? --- # complex time series .img80[![complex time series](complex-time-series.svg)] ??? --- # continuous vs discrete ## depends on min and max .img80[![continuous](continuous.svg)] ??? * linear, log --- # discrete domain ## aka ordinal (categorical + order), depends on data .img80[![discrete](discrete.svg)] -- ### Q: is Quarterized data just a discrete domain? --- # daily data as discrete .img80[![discrete daily](discrete-daily.svg)] --- # daily data as continuous .img80[![continuous daily](continuous-daily.svg)] --- # Plot[X, Y] .img80[![plotting](plotting.svg)] --- # how to differentiate discrete from continuous data? * easy one: `LocalDate` is not ok for Quarters * is `LocalDate` discrete, continuous, or both? * how to communicate that discrete values have different intervals? --- # the real meaning of `X` in `Plot[X,Y]` ``` (p: Plot[X, Number]).resolveXAxis().applyAsValue(x1) ``` * `X1`, `X2`, etc.? * should `X` be [0, 1]? * and we map everything to [0, 1]? * how are the values in `X` related to the visual axis? --- # data-driven charts * overlays are complex in `ggplot2`: you need to align the axes manually * main idea: you do as much as you can **in** the frame before handing it to the chart engine