• Removed FutureWarnings when using pandas 2.1.0


  • Added breaks_symlog to calculate breaks for the symmetric logarithm transformation.


  • The default big_mark for label_number has been changed from a comma to nothing.



API Changes

  • mpl_format has been removed, number_format takes its place.

  • mpl_breaks has been removed, extended_breaks has always been the default and it is sufficient.

  • matplotlib has been removed as a dependency of mizani.

  • mizani now requires python 3.9 and above.

  • The units parameter for of timedelta_format now accepts the values "min", "day", "week", "month", instead of "m", "d", "w", "M".

  • The naming convention for break formatting methods has changed from *_format to label_*. Specifically these methods have been renamed.

    • comma_format is now label_comma

    • custom_format is now label_custom

    • currency_format is now label_currency

    • label_dollar is now label_dollar

    • percent_format is now label_percent

    • scientific_format is now label_scientific

    • date_format is now label_date

    • number_format is now label_number

    • log_format is now label_log

    • timedelta_format is now label_timedelta

    • pvalue_format is now label_pvalue

    • ordinal_format is now label_ordinal

    • number_bytes_format is now label_bytes

  • The naming convention for break calculating methods has changed from *_breaks to breaks_*. Specifically these methods have been renamed.

    • log_breaks is now breaks_log

    • trans_minor_breaks is now minor_breaks_trans

    • date_breaks is now breaks_date

    • timedelta_breaks is now breaks_timedelta

    • extended_breaks is now breaks_extended

  • dataspace_is_numerical has changed to domain_is_numerical and it is now determined dynamically.

  • The default minor_breaks for all transforms that are not linear are now calculated in dataspace. But only if the dataspace is numerical.




Bug Fixes

  • Fixed regression in but in date_format where it cannot deal with UTC timezone from timezone #30.



Bug Fixes

  • Fixed but in date_format to handle datetime sequences within the same timezone but a mixed daylight saving state. (plotnine #687)



API Changes

  • palettable dropped as a dependency.

Bug Fixes

  • Fixed bug in datetime_trans where a pandas series with an index that did not start at 0 could not be transformed.

  • Install tzdata on pyiodide/emscripten. #27



Bug Fixes

  • Fixed regression bug in log_format for where formatting for bases 2, 8 and 16 would fail if the values were float-integers.


  • log_format now uses exponent notation for bases other than base 10.



API Changes

  • The lut parameter of cmap_pal and cmap_d_pal has been deprecated and will removed in a future version.

  • datetime_trans gained parameter tz that controls the timezone of the transformation.

  • log_format gained boolean parameter mathtex for TeX values as understood matplotlib instead of values in scientific notation.

Bug Fixes

  • Fixed bug in zero_range where uint64 values would cause a RuntimeError.



API Changes

  • comma_format is now imported automatically when using *.

  • Fixed issue with scale_discrete so that if you train on data with Nan and specify and old range that also has NaN, the result range does not include two NaN values.



Bug Fixes

  • Fixed log_breaks for narrow range if base=2 (#76).



Bug Fixes

  • Fixed bug in rescale_max() to properly handle values whose maximum is zero (#16).



Bug Fixes

  • Fixed regression in mizani.scales.scale_discrete.train() when trainning on values with some categoricals that have common elements.



Bug Fixes

  • Fixed issue with mizani.formatters.log_breaks where non-linear breaks could not be generated if the limits where greater than the largest integer sys.maxsize.

  • Fixed mizani.palettes.gradient_n_pal() to return nan for nan values.

  • Fixed mizani.scales.scale_discrete.train() when training categoricals to maintain the order. (plotnine #381)





  • mizani.breaks.date_breaks now supports intervals in the

    order of seconds.

  • mizani.palettes.brewer_pal now supports a direction argument to control the order of the returned colors.

API Changes




  • mizani.formatters.log_format now does a better job of approximating labels for numbers like 3.000000000000001e-05.

API Changes

  • exponent_threshold parameter of mizani.formatters.log_format has been deprecated.



API Changes

  • Log transforms now default to base - 2 minor breaks. So base 10 has 8 minor breaks and 9 partitions, base 8 has 6 minor breaks and 7 partitions, ..., base 2 has 0 minor breaks and a single partition.



Bug Fixes

  • Fixed issue where some functions that took pandas series would return output where the index did not match that of the input.



Bug Fixes

  • Fixed issue with log_breaks, so that it does not fail needlessly when the limits in the (0, 1) range.


  • Changed log_format to return better formatted breaks.



API Changes

  • Support for python 2 has been removed.

  • call() and now accept optional parameter n which is the number of minor breaks between any two major breaks.

  • The parameter nan_value has be renamed to na_value.

  • The parameter nan_rm has be renamed to na_rm.


  • Better support for handling missing values when training discrete scales.

  • Changed the algorithm for log_breaks, it can now return breaks that do not fall on the integer powers of the base.






  • Fixed date_format to respect the timezones of the dates (#8).


  • Changed date_breaks to have more variety in the spacing between the breaks.

  • Fixed date_format to respect time part of the date (#7).


  • Fixed (regression) break calculation for the non ordinal transforms.


  • trans objects can now be instantiated with parameter to override attributes of the instance. And the default methods for computing breaks and minor breaks on the transform instance are not class attributes, so they can be modified without global repercussions.



API Changes

  • Breaks and formatter generating functions have been converted to classes, with a __call__ method. How they are used has not changed, but this makes them move flexible.

  • ExtendedWilkson class has been removed. extended_breaks() now contains the implementation of the break calculating algorithm.


  • Fixed issue where some formatters methods failed if passed empty breaks argument.

  • Fixed issue with log_breaks() where if the limits were with in the same order of magnitude the calculated breaks were always the ends of the order of magnitude.

    Now log_breaks()((35, 50)) returns [35,  40,  45,  50] as breaks instead of [1, 100].



API Changes

  • Added log_trans now uses log_format() as the formatting method.




  • Fixed bug where using log_breaks() with Numpy 1.13.0 led to a ValueError.


  • Added xkcd_palette(), a palette that selects from 954 named colors.

  • Added crayon_palette(), a palette that selects from 163 named colors.

  • Added cubehelix_pal(), a function that creates a continuous palette from the cubehelix system.

  • Fixed bug where a color palette would raise an exception when passed a single scalar value instead of a list-like.

  • extended_breaks() and mpl_breaks() now return a single break if the limits are equal. Previous, one run into an Overflow and the other returned a sequence filled with n of the same limit.

API Changes

  • mpl_breaks() now returns a function that (strictly) expects a tuple with the minimum and maximum values.


  • Fixed bug in censor() where a sequence of values with an irregular index would lead to an exception.

  • Fixed boundary issues due internal loss of precision in ported function seq().

  • Added mizani.breaks.extended_breaks() which computes breaks using a modified version of Wilkinson's tick algorithm.

  • Changed the default function mizani.transforms.trans.breaks_() used by mizani.transforms.trans to compute breaks from mizani.breaks.mpl_breaks() to mizani.breaks.extended_breaks().

  • mizani.breaks.timedelta_breaks() now uses mizani.breaks.extended_breaks() internally instead of mizani.breaks.mpl_breaks().

  • Added manual palette function mizani.palettes.manual_pal().

  • Requires pandas version 0.19.0 or higher.



First public release