Skip to content

Latest commit

 

History

History
156 lines (145 loc) · 6.8 KB

changelog.org

File metadata and controls

156 lines (145 loc) · 6.8 KB

v0.3.1

  • fixes #61, by forcing the minimum y value to be 0 for geom_bar if identity statistics is being used.

v0.3.0

  • aes now not only accespts strings, but also numbers, which will also be wrapped in a FormulaNode of kind fkVariable. No need to manually create such a formula.
  • add new recipes:
    • rAutoColoredNeuralSpikes.nim: example on how to create neural raster spike plot
    • rCustomColoredNeuralSpikes.nim: same
  • add scale_x/y_reverse to reverse the x or y scales. Done by adding FilledScales fields reversedX/Y, which are set in collectScales. If any scale is reversed, the plot will be reversed.

v0.2.21

  • summarize now works reliably on data frames, which have been grouped by multiple columns
  • fixes a few bugs regarding wrong length scales used
  • fixed a possible assertion error, due to unsafe access of an `Option[T]` (wrong field checked in if)
  • introduce StyleLabel to retain information about styles for discrete labels in FilledGeom.yieldData. Allows to know which style belongs to which label of a discrete scale.
  • fix assignBinFields to actually use given argument instead of result from caling scope
  • add theme fields to hide labels, ticks and tick labels
  • add theme_void, an empty theme. No labels, ticks, tickLabels, grid lines, white background.
  • use pretty(Value ...) for children of VObject
  • do not collect text scales anymore. They’re not used in the post processing stage. Only care about column (note: this may change, if we want to incorporate the string widths / heights into the plot scales!)
  • do not crash if no label is present in handleLabels yet
  • add ScaleKind for text: scText to not confuse text with x or y axes
  • plot layout now differs for themes without labels and ticks. Only 0.2 cm on LHS of plot instead of 2.5 cm
  • handleDiscreteTicks now takes only labels instead of a full Scale
  • handleTicks respects hideLabels and allows custom number of ticks (to call it from elsewhere, e.g. gradients)
  • handleTicks can take a custom boundScale. Allows to call it for other uses.
  • only yield scales that show up as legends by enumerateScalesByIds iterator
  • addIdentityData during collection now preallocates space for data
  • add ridgeline plots; accessed by applying ggridges to a plot. Ridges are not really a geom, but rather a specific feature similar to facets. Essentially an aesthetic yRidges is added, by which is classified. Each labels gets its own ridge. In that ridge every normal kind of plot is allowed (including more classical ridgeline plots)
  • progress towards supporting –gc:arc. No more deepCopy in use.
  • add (not working yet) scale_*_reverse to reverse x and y scales. In principle it does work, but how to hand information to where its needed unclear (add to FilledScales, GgPlot, … ?)
  • add more recipes:
    • rAnnotatedHeatmap.nim: example of a heatmap overlaid with text
    • rMultiSubplots.nim: an example on how to use ginger to combine two plots to one subplot
    • rPeriodicTable.nim: creating a periodic table as a plot!

v0.2.20

  • move font helper to ggplot_utils
  • remove spacing between multiple legends. Previously there was 1 cm of space if multiple legends were shown. That took too much space and wasn’t required imo.
  • fix classification by multiple discrete scales
  • fix issue for discrete scales, which caused index error in getView, when a position was moved via binPosition
  • add width, height to scales, which are collected. This was simply missing.
  • add geom_text
  • add font field to GgStyle object
  • update rMultipleLegends due to spacing between two legends
  • add recipes:
    • rSimpleGeomText.nim
    • rClassifiedGeomText.nim
    • rAnnotateUsingGeomText.nim
    • rAnnotateMaxValues.nim
  • update ginger dependency to v0.1.17

v0.2.19

Hotfix release for small regressions introduced in v0.2.18

  • fixes the layout of plots discrete axes. Due to recent ginger changes the position of the ticks and tick labels was wrong.
  • fixes the placement of geom_tile for discrete cases.
  • updates all plots with discrete axes

v0.2.18

  • finally fixes multiple legends. Now automatically evenly spaced and centered
  • distances of legends / labels to legend are now fixed in absolute units (thanks to fix in ginger v0.1.15)
  • fix distance of tick labels to ticks, now also in fixed absolute distances (that’s why every plot is updated)
  • add geom_tile
  • update all plots due to ginger fixes / placement of tick labels

v0.2.17

  • most geoms now take an alpha argument to override the alpha of fillColor
  • if a fill color of a line is set, the line is now continued down to the x axis

v0.2.16

  • geom_point with positoin = "stack" now draw points at y = 0
  • geom_histogram/bar now draw “empty” elements for position = "stack" (set lineWidth to 0 to make them disappear)
  • y axes may now be discrete (previously only the x axis could be discrete)
  • rewrites drawing code to have less duplication. For some kinds of plots this might (!) incur a tiny performance regression.
  • refactors out code related to

v0.2.15

  • IMPORTANT: there was a bug in seqmath.histogram, which is used in geom_histogram / if stat = "bin" is used. The bug caused wrong histogram calculations if and only if unequal bin widths were used. Equal bin widhts were fine. This was fixed in seqmath v0.1.7
  • add geom_errorbar for plots with error bars in x / y direction
  • add geom_linerange, which are either error bars without an orthogonal line at the end (not “T” shaped, “|” like) or just, well, line ranges.
  • slight performance increase for large datasets, due to avoiding running over data twice to determine min / max values.

v0.2.14

  • starts a changelog :)
  • formula.evaluate[T](node: FormulaNode, data: T): Value is now formula.reduce(node: FormulaNode, data: DataFrame): Value. Generic usage is just clutter. reduce makes the intent clearer and opens up the name for an evaluate that returns a full vector
  • adds formula.evaluate(node: FormulaNode, data: DataFrame): PersistentVector[Value].
  • The Scale.col field is now FormulaNode instead of string. This allows for calculations on the DF to use for scales instead of only columns.
  • aes() is now generic and takes a mix of string | FormulaNode to allow to apply formulas to the DF w/o intermediate calculations on the DF manually. E.g. aes(y = f{"yCol" * 2}) is now valid
  • improve performance for certain plots with many geoms
  • add inplace variants for select, mutate, transmute (*Inplace).