Changelog
datachart-1.0.0 (2026-09-29)
Breaking Changes
- Removed every remaining pre-1.0 deprecation shim and alias; starting at 1.0.0 datachart follows SemVer for its programmatic API (not visual output), with future removals going through a one-release deprecation cycle (see
docs/versioning.md) - Renamed shared front parameters:
show_heatmap_values→show_values,valfmt→value_format,normalize→ridge_scale(RidgelinePlot),features→data(BasemapChart),type→mark(RadialChart),startangle→start_angle,innerradius→inner_radius,filled→fill,mode→swarm_mode,mincnt→min_count,gridsize→grid_size(HexbinChart;kde1d/kde2d's owngridsizeis also nowgrid_size),show_colorbars→show_colorbar ScatterChart's per-pointlabelparameter and"label"record key are renamed toannotation- Renamed constants:
SCALE→AXIS_SCALE,NORMALIZE→COLOR_NORM,LINE_MARKER.NONE→NO_MARKER,LINE_STYLE.NONE→NO_LINE,SCATTER_MATRIX_DIAGONAL.NONE→BLANK; every constant now validates itself once at the front, and an unrecognisedbar_moderaisesValueErrorinstead of silently falling back to"group" - Renamed theme default keys to one naming rule:
plot_calendar_heatmap_week_start→chart_default_calendar_heatmap_week_start,plot_ridgeline_overlap→chart_default_ridgeline_overlap, plus a renamed node-label-position key; tick-label rotation keys are unified toaxes_x/yticks_label_rotate - Typing renames: record types now end in
RecordAttrs(LineRecordAttrs,GanttTaskRecordAttrs, ...); removed 19 unused*SingleChartAttrs; addedOverlayStyleAttrs stats.correlationis renamed tostats.pearson;kde1d/kde2dreturn named columns;Config.update/Config.resetreplaceupdate_config/reset_config;save_figure(fmt=...)replacesformat=- Every record front now reads its data through the builder's canonical keys;
GanttChartandDumbbellChartgain named keys (task/start/end/group/progress/depends_on,label/start/end) in place of positional dict shapes Panel.show_legendnow defaults toNone(wasFalse);Panelgainsemphasis_rule;Gridgainsshow_legend,legend,show_grid,xmin/xmax,ymin/ymax, andaspect_ratio- Bump-chart end labels print in the text colour instead of the series colour, matching the new
show_labels/label_positiononLineChart/StackedAreaChart; theBUMP_LABEL_POSITIONalias is gone in favour ofLINE_LABEL_POSITION - No predefined theme titles its legend by default (
plot_legend_titleisNoneon the base theme);MUTED,MUTEDHATCH,HATCH, andSLATEHATCHdraw the base theme's solid grid - Greyscale, hatch, ink, sketch, material, and minimal themes are re-stepped to pass a colour-blindness scoring gate (
score_palette), changing some of their colours;register_theme/derive_themewarn when a custom palette fails it - Malformed record/column data now raises one
ValueErrornaming the front, the expected shape, and the offending index, instead of drawing garbage or crashing inside matplotlib/numpy None,NaN, andinfvalues are now uniformly dropped rather than raising or drawing garbage, acrossutils.statsand the bar/histogram/scatter/group/contour layers- Added validation at previously-silent entry points:
bandwidth,Panel/Griddict keys, legend location,RadialChart's required keys, andstats.histogramNaN input __all__now defines each module's public surface, hiding internal helpers previously visible onconstants,typings,config,utils.stats,utils.compose, andutils.figure- Theme faces (fonts) and the basemap outlines download and cache on first use instead of shipping in the wheel; a smaller install now needs network access the first time those features are used
New Features
- Added
BasemapChart: coastlines, land, borders, lakes, rivers, roads, and country highlighting (highlight=) from Natural Earth, downloaded and cached rather than bundled; added theGEOGRAPHICaspect ratio - Added
ImageChartfor pictures anchored to a data extent - Added pairwise comparison
brackets, a fourth reference-mark family alongsidevlines/hlines/vspans - Added diagonal reference lines (
dlines), a third reference-line family defaulting to the parity liney = x - Added a centred/diverging heatmap norm (
norm="centered"/"twoslope",vcenter) with a diverging colormap on every theme - Added scatter point error bars (
xerr/yerr, symmetric or[low, high]), reported in interactive hover - Added end labels (
show_labels,label_position) onLineChartandStackedAreaChart - Added the
DARK,MUTEDHATCH, andSLATEHATCHthemes, andderive_themeto build a theme variant from a colormap, the basis the six bundled themes are now built from - Shipped
py.typed; every front returns the publicDatachartFiguretype;PanelItem/GridItem/LayoutSpecare typed composition settings - Documentation: a Use Cases section (seven pages walking a real dataset end to end per field), and a stated versioning/deprecation policy with a new CONTRIBUTING.md
Bug Fixes
- Raised dependency floors (matplotlib, numpy, scipy, pypalettes, typing-extensions) to versions the code actually needs, and test them in CI at
--resolution lowest-direct - Removed the package's private-matplotlib touchpoints bar one, which is guarded by an import-time signature check with a graceful, warned fallback
- Bars, radial marks, and stacks are placed against one shared category index per panel, so series with mismatched label sets or order no longer misplace bars or crash
- Bars, histograms, and areas on twin axes stack per value axis instead of pooling heights across axes
- Fixed six silently-wrong renders: bars/labels drawn at the true value on a log axis, flat mark lists (
vlines/hlines/etc.) applying to every chart instead of scattering across datasets, pypalettes' padded repeats no longer duplicating colors,hue="label"no longer force-annotating every scatter point, honest placement of one-value/missing parallel-coordinate cells, and Panel tick formats mapping to the correct axis role - Previously-crashing valid inputs now render or raise a clear
ValueError: NaN in groups/histograms/scatter fits, degenerate spread in violin/ridge/KDE, single-dataset per-chart settings, empty dict data, andCalendarHeatmap's flat record lists create_color_cyclewarns once when series, hue levels, groups, or nodes outrun the palette size, instead of silently repeating colors
datachart-0.10.2 (2026-09-18)
Breaking Changes
- Removed the deprecated
VLinePlotAttrs,HLinePlotAttrs,TextAttrs,HeatmapColorbarAttrs, andChartCommonAttrsnames announced in 0.10.0
Bug Fixes
- Heatmap value labels turn white on any dark cell, judged per cell, so colormaps with a dark low end such as Cividis stay readable
datachart-0.10.1 (2026-09-18)
New Features
- Added the
HARBOR,MUTED, andCONTRASTcolour-blind-safe themes - Made the
DEFAULTpalette colour-blind safe with a softened Okabe–Ito set closed with charcoal - Gave every theme its own lead hue:
MINIMALis violet, andMATERIAL,HATCH, andSKETCHno longer share the default blue - Added
COLORS.YlOrBr - Scored every theme for colour-blindness suitability in the theme gallery
Bug Fixes
color_parallel_huedefaults toNoneand takescolor_general_multiple, so parallel coords hue categories follow the active theme
datachart-0.10.0 (2026-09-18)
Breaking Changes
- Chart-specific constants carry their chart's prefix:
BASELINEis nowSTACKED_AREA_BASELINEandDIRECTIONis nowRADIAL_DIRECTION - A log axis raises
ValueErroron data at or below zero instead of silently dropping the points - Box, violin, swarm, and raincloud groups sit at 0-based positions like bars, so reference lines and annotation targets aimed at a group shift by one
- The
MINIMAL,MATERIAL, andHATCHthemes no longer show value labels by default
Deprecations
VLinePlotAttrs,HLinePlotAttrs,TextAttrs, andHeatmapColorbarAttrsare renamed toVLineSettingAttrs,HLineSettingAttrs,TextSettingAttrs, andColorbarSettingAttrs; the old names warn and are removed in the next releaseChartCommonAttrswarns and is removed in the next release
New Features
- Added
BumpChartwith theBUMP_RANKandBUMP_LABEL_POSITIONconstants - Added
CalendarHeatmapwith theCALENDAR_WEEKDAYconstant - Added
RidgelinePlotwith theRIDGELINE_SCALEconstant - Added
GanttChartwith periods, group headers, milestones, dependency arrows, and a today marker, plus theGANTT_VALUE,GANTT_SORT_KEY,GANTT_ARROW_ENTRY, andGANTT_DATE_PERIODconstants - Added
DumbbellChartwith theDUMBBELL_VALUEandDUMBBELL_SORT_KEYconstants - Added
ScatterMatrixwith theSCATTER_MATRIX_DIAGONALconstant - Added the
QUILLtheme: black ink on white paper with a bundled IM Fell English font, and the ink stroke, etch, hatch cycle, line-style cycle, and marker cycle attributes behind it - Added
NETWORK_LAYOUT.WEIGHTEDandNETWORK_LAYOUT.GROUPED, and theNETWORK_LABEL_POSITIONconstant - Added
figure.show(interactive=True)for zoom, pan, and hover-to-inspect on every chart, behind thedatachart[interactive]extra - Added value labels (
show_values,value_format) to line, scatter, histogram, stacked area, box, violin, swarm, and raincloud charts, with a halo behind them - Added scatter point labels
- Added the per-figure
legendsetting (title, location, columns, alignment) and theLEGEND_LOCATION.OUTSIDE_*locations - Added the per-figure
colorbarsetting with label, four-edge location, format, and ticks - Added reference bands (
vspans,hspans) to every chart that takes reference lines, and toRadialChart - Added a datetime x axis on continuous charts, dated group labels, and the
xticks_format/yticks_formatsettings with theDATE_FORMATconstant - Added
sortandsort_byto bar, pyramid, radial, box, and violin charts with theSORTconstant - Added
emphasis_ruleto every chart and per-record emphasis on bar, scatter, and swarm records - Added
Panelaxis scales (scalex,scaley,scaley_right) - Added
Annotatetargeting of a multi-subplot figure's subplots with thesubplotindex - Added
config.overrideandconfig.using_themecontext managers,config.list_themes, and JSON theme files throughconfig.save_theme/config.load_theme - Added
spearman,mode,skewness,kurtosis,linear_fit,bootstrap_ci,histogram,rolling_mean,ewma, andloesstoutils.stats;minimumandmaximumaccept datetimes and the paired helpers accept a temporal x save_figurewrites several formats in one call and returns the paths writtenTreemapnests groups four levels deep, fills a group's box in its own color, and takes one pad for the top-level gap and the gutter- A plain color string is accepted wherever a palette name is
- Documentation: a landing page, one reference page per chart, chart guides rewritten around real datasets, figures for every constant, and notebooks executed at build time
Bug Fixes
- Draw reference lines over marks, and filled surfaces under lines in a
Panel - Keep every subplot's data inside shared axes and end an axis on the tick its data sits on
- Keep a subplots figure's title, labels, and sharing in a
Gridcell - Draw a subplot in the color a single chart uses
- Hide value labels and marks anchored past a user-set axis limit
- Estimate densities and regressions in log space on a log axis
- Convert text positions through the axis units on a date axis
- Give a covered legend headroom at the value-axis end and draw it over right-axis marks
- Keep an outside-top legend under a grid cell's title and color the legend title like its labels
- List labelled reference lines beside a chart's own legend keys
- Draw one shared reference dict once per axes, and a right-axis figure's references in its own coordinates
Panel: adopt a source figure's bar mode, let a figure with no scale abstain from the axis vote, and raise on a heatmap figure- Colorbar: reserve room for every aspect-locked bar, keep it in tight saves, keep the axis label beside its ticks, and drop explicit ticks outside the mapped range
- Key treemap and sankey colors by input order
- A single color makes a colormap with both ends; spell
Magma,Turbo, andOkabeIto_Blackas pypalettes knows them - Fall back to Liberation Sans where Helvetica and Arial are missing, and take the theme font on heatmap values, contour labels, colorbar ticks, and parallel labels
- Drop the theme edge on markers too small to carry it
- A
plot_bar_value_*alias wins over a spread theme's canonical key - Histogram: pool the observations a point holds in a list, break a step outline where a log axis has no zero, and end a cumulative step outline at its total
- Parallel coordinates: snap a numeric dimension to its enclosing ticks, span the hue ramp over every record, and accept a flat dimensions list or a missing per-set entry
- Radial: place the r tick labels between the first two spokes and let
show_gridselect which polar grid set draws - Pyramid: pin the value axis to a user
xmaxand keep the legend headroom fit symmetric - Sankey: keep ribbon values off the node bars
- Box and violin: key the subtitle in the legend and raise on a dataset list without subplots
- Swarm: pack overlaid points as one cloud, draw unfilled markers as strokes in the series color, and draw dots whole on an axis end that sits on the data
- Scatter: one bubble size scale per axes
- Contour: fill values beyond an explicit levels list, accept numpy arrays as levels, and explain a filled contour given fewer than two levels
- Hexbin: bin hexagons in the axes' log scale
- Network: lay out disconnected spring graphs component by component and inset the fixed layout by the layout margin
- Annotations: cap the connector's target gap to the mark it names and keep the stub on a connector that still has room
datachart-0.9.1 (2026-09-07)
New Features
- Added
NetworkChartwith theNETWORK_LAYOUTconstant andARROW_STYLE.STRAIGHT - Added
Treemapwith squarified tiling and one-level nesting - Added the
SKETCHtheme: hand-drawn wobble, halo, and a bundled Comic Neue font - Restructured the README for onboarding with a charts table and rendered examples
Bug Fixes
- Clip network arrows at the true marker radius
- Keep the area floor fill unsketched under the sketch theme
datachart-0.9.0 (2026-08-28)
Breaking Changes
Heatmaptakes{x, y, z}chart dicts- Removed the deprecated composition fronts (
OverlayChart,FigureGridLayout,figure_grid_layout) and the deprecated chart-attrs typing aliases
New Features
- Added
ViolinPlotwith inner marks, bandwidth control, and split halves, plus theBANDWIDTHconstant - Added
SwarmPlot, composable with box and violin plots on a shared category index - Added
RaincloudPlot - Added
ContourChartwithcontour_levelsand theCONTOUR_LEVELSconstant - Added
HexbinChartwith theHEXBIN_REDUCEconstant - Added
StackedAreaChartwith theBASELINEconstant - Added
SankeyChartwith column headings and ribbon values - Added
kde1dandkde2ddensity estimates toutils.stats - Added figure-level
xlabel/ylabeltoGrid - Versioned documentation, grouped chart index, and a theme gallery covering every chart
Bug Fixes
- Draw the grid below the marks and hug the data range in line-only panels
- Keep a host row's height when a nested grid sits alone in it
- Place colorbars with the layout engine
- Size the histogram y-range by its view
datachart-0.8.1 (2026-08-26)
New Features
- Added
config.register_themefor registering custom named themes usable withset_theme
datachart-0.8.0 (2026-08-24)
Breaking Changes
- Renamed the themes for their visual trait:
THEME.DEFAULT,THEME.GREYSCALE,THEME.INK,THEME.HATCH,THEME.MINIMAL,THEME.MATERIAL; removedTHEME.PUBLICATIONandTHEME.BACKGROUND - Replaced the background theme with
EMPHASISroles, set per chart or per figure FIG_SIZEis now an A4-anchored size grid; paper sizes respect print margins and the column gap- Figures are no longer shown implicitly; showing goes through
Figure.show()(inline display in Jupyter still works) - Histogram stacking is now controlled via
bar_mode
New Features
- Added
PyramidChartfor creating population pyramid charts - Added
RadialChartfor creating radial bar charts - Added text annotations to every chart and a post-hoc
Annotateutility, with connectors placed by geometry and data - Added the public
PanelandGridcomposition utilities;Gridfigures nest recursively insideGrid,Panelfigures flatten losslessly - Added the
BAR_MODEconstant and support forVALUE_FORMATconstants in bar value labels - Added heatmap cell borders via
plot_heatmap_edge_widthandplot_heatmap_edge_color - Panels infer their orientation and orient the value axis accordingly
- Themes now drive chart defaults and support hatch cycles
- Revamped the documentation: how-to guides built around real-world datasets, a theme gallery, at-a-glance visualizations for all visual constants, and
llms.txtendpoints generated at build
Deprecations
OverlayChart,FigureGridLayout, andfigure_grid_layoutare deprecated; usePanelandGridinstead
Bug Fixes
- Center grouped bars, honor a per-chart
plot_bar_width, and guard category ticks against ragged category counts - Fill the area under lines down to the axis floor
- Keep bubble chart legend markers at the base marker size
- Apply themed label and tick furniture uniformly across composed figures; align nested grid axes with the host grid's columns
- Skip the legend when no handle carries a label
datachart-0.7.3 (2025-12-06)
Bug Fixes
- Fix input parameter handling in different charts
- Rename
combine_figuresintofigure_grid_layout
datachart-0.7.2 (2025-12-05)
Bug Fixes
- Updated github workflows
- Fix problems regarding release (v0.7.1 was not created correctly)
datachart-0.7.1 (2025-12-05)
New Features
- Add support for custom layout grids in
combine_figures
datachart-0.7.0 (2025-12-05)
Breaking Change
- All
chartinput parameters are now provided in a pythonic way (see documentation) - Changed Python support to version 3.10, 3.11, 3.12, 3.13
New Features
- Added
ScatterChartfor creating scatter plots - Added
BoxPlotfor creating box plots - Added
ParallelCoordsfor creating parallel coordinate plots - Added
combine_figuresto create a combined grid layout of multiple figures - Updated existing themes and added
THEME.PUBLICATIONthat might be suitable for publication charts - Added pypalette dependancy; used for selecting colormaps
- Added scipy dependancy; used for calculating statistics and regression lines
- Added new examples to the existing documentation
datachart-0.6.3 (2024-10-17)
Bug Fixes:
- Fix
scaleybug inHistogram
datachart-0.6.2 (2024-08-16)
Bug Fixes:
- Fix
BarChartbar position bug
datachart-0.6.1 (2024-08-15)
New Features:
- Add
scalesupport toLineChart,BarChartandHistogram
datachart-0.6.0 (2024-08-13)
Breaking Changes:
- Renaming in the
chartsmodule - Rename the
line_charttoLineChart - Rename the
bar_charttoBarChart - Rename the
histogramtoHistogram - Rename the
heatmaptoHeatmap - Renaming the
definitionsmodule intotypings - Renaming of
styleattributes in all modules
New Features:
- Complete rework of documentation
- Update project configuration
- Update githooks
- Add favicon
Bug Fixes:
- Fix
COLORSselection
datachart-0.5.0 (2023-11-24)
New Features:
- Add support for WebP output format
- Improve code imports
- Consistent variable naming
- Add code tests
Bug Fixes:
- Use consistent naming convention
datachart-0.4.1 (2023-11-20)
Bug Fixes:
- Fix axis label position
datachart-0.4.0 (2023-11-20)
New Features:
- Add heatmap visualization
- Add tick placement, label and rotation support
Bug Fixes:
- Fix Consistent attribute naming
- Fix attribute unit tests
datachart-0.3.0 (2023-11-20)
New Features:
- Add vertical and horizontal line support
- Update documentation
datachart-0.2.6 (2023-11-20)
New Features:
- Increase Python support to 3.8 - 3.12
Bug Fixes:
- Fix typing documentation
datachart-0.2.5 (2023-11-20)
New Features:
- Add custom tick placement
- Add unit tests and CI/CD
- Add documentation
datachart-0.1.0 (2023-07-21)
- Initial release
New Features:
- Add support for different types of charts: line chart, bar chart, histogram