Repository navigation
Structural polish and future proofing, lots of new support for accessing and setting variables
ORGANIZATION: Reorganized most of the package to be much more consistent and future proof. For instance I removed the "expected_keys" in the init, and now those are automatically generated from the defaults in the init, which largely improves readability and makes future changes easier since you only need to add new variables to one location. Most functions called within plot() are single lines which are self explanatory, and most of their sub_functions are also much more organized for readability and better future consistency when editing the package. I did not realize how much reorganization would happen in this release, but for every single feature I want to add in the future I realized I needed more consistency and better function packing/flow.
COMMENTS: Comments are now consistent in the entire package. I still need to add docustrings and a GitHub wiki, but the package is now so well commented I'm sure at least your CoPilot will be able to scrape any info it needs
DYNAMICALLY ACCESSING VARIABLES + TEMPLATING: accessing variables is super easy now, I have a whole methods section within base_plotter for this. You can call plotter.get(key) to get any variable, and plotter.set(key, value) to set it. Key and Value can be lists to do multiple at once, which gave me the idea to do get_all() and set_all(dictionary) for automating this kind of stuff, and even better you can call plotter.get_copy_settings() to get a dictionary of settings which will be accepted on initialization of another plot with imported_settings=copied_dict!!!!! Using this allows you to overwrite any copied settings by calling key words beside it which override the settings for easy use in different plots. get_copy_settings() is useful because it specifically gets the initialization settings and gets rid of problematic things such as DF and xlab,ylab,zlab which could wreak havoc in the wrong setting. If you want to copy a plot's settings post initialization (say it was edited), you can use plotter.get_all(include_problematic = False) to get your setting dictionary and excluding problematic variables, though this may not work quite as well and might lead to unexpected errors (you can most likely solve errors by deleting problematic entries from the dictionary in post as you stumble upon errors). You can easily use plotter.plot() as a reset if you change settings after initialization that have not been plotted, this should reiterate through most plot creation processes which you might have affected by changing variables
KWARGS AND LEGEND: support for parsing nested kwargs, lots of legend handling quality of life since legend has a dictionary called prop within itself which has some defaults that can now be recursively overwritten without wiping out other sub elements with the input legend_kwargs dict. Can now handle the legend in initialization with legend_kwargs or get the legend with new methods and do any normal legend operation on it. Also added support for easily adding to legend with plotter.add_to_legend(handles, labels, kwargs) (which internally gets the legend, copies it, then creates a new one with an internal function that will get the formatting consistent) and other such quality of life methods!
AXIS LIMITS: fixed axis limits, better scientific notation behavior, can choose whether error bars should change limits
LINES: fixed lineplot to behave if only one group provided (no zlab), added support for line width which is weirdly nested but now easy to handle.