Package: pyfigure98
Pyfigure98A python package to create plots and figures easilyIf you have ever tried to make figures in python, you may have faced the same issues that annoyed me: a lot of copy/pasting between projects, countless hours spent on the internet searching forhow to change the size of this or that thing again ?and always searching for specific things like axes formated specifficaly for angles, logarithms, times, ...With this project, no more hurdles.FeaturesThis project is based onmatplotliband contains many methods to facilitate the creation of complex figures. Here is a non-exaustive list of its functionalities:Hability to put multiple charts on a single figure.Hability to have more than oney-axis.Hability to format thex-axisto measure time, angles and logarithmic scales.Hability to format dey-axisto measure angles and logarithmic scales.Automated and unified font sizes, defined intemplates.And many more !DocumentationInstallationTo install this package usingpip, simply runpipinstallpyfigure98UsageIn order to use this package, create a newFigureobject, and add a new figure to it:frompyfigure98importFigureimportnumpyasnp# Used latermyNewFigure=Figure()myNewFigure.addFigure(template="default",rows=1,cols=1)For more informations on how to use thetemplatevariable and how to modify templates, seesection.Next, you can add a new chart to your newly-created figure:chartOfMyNewFigure=myNewFigure.addchart("myChart")Modify thex-axisandy-axisby using these methods:chartOfMyNewFigure.setAxisX(x_min=-10,x_max=10,label="x")chartOfMyNewFigure.setAxisY(y_min=-5,y_max=10,label="f(x)")Add a plot by using:x=np.arange(-10,10,0.2)y=(0.3*x)**3chartOfMyNewFigure.plotStandard(x=x,y=y,label="example with f(x)=0.3*x^3",color="red")Don't forget to add a title and a legend !myNewFigure.setTitle("My figure")chartOfMyNewFigure.setTitle("my chart")chartOfMyNewFigure.setLegend()Finally, save you figure:myNewFigure.figSave('myfig')After all these steps, you should obtain this:This example is, of course, trivial.
But it illustrates the basic principles of this package.Of course, there are many more methods available !TemplatesAs explained before, the templates are responsible for the unified font sizes and colors (WIP) across different figures.UsageTo use a template, simply specify thenameof thename.jsonlike in the usage example describedhere.Add a custom templateCustom templates are supported as well.
In order to create and use a custom template, proceed as follow:frompyfigure98importFiguremyNewFigure=Figure()myNewFigure.addCustomTemplate("custom")myNewFigure.addFigure(template="custom",rows=1,cols=1)Here, the custom template file used iscustom.json. This file must be located in the same directory as the python script calling that function. So in this example, the structure is as followed:├── myproject
│   ├── figurewithcustomtemplate.py
│   ├── custom.jsonWrite a custom templateThe template needs to be a.jsonfile with a specific structure.Here you can see the default template file structure.{"fig_size_x":11,"fig_size_y":8,"label_size":25,"tick_size":20,"legend_size":20,"in_text_size":20,"subplot_title_size":30,"fig_title_size":35,"markersize":10,"tick_width_major":2.25,"tick_length_major":5,"tick_width_minor":1.75,"tick_length_minor":3}Code insidedefault.json.As you can see, each property has a corresponding value and represents a certain element in a plot. At the end of this section, a table will give you all the different properties and corresponding default values, as well as a description of what these values are used for.If a property is not specified in the customtemplate.json, its
value will be determined by the one defined indefault.json.
This way, you do not need to specify every properties in your
custom file if you only want to change a few of them.Here is an overview of all the different template variables and their default value.SyntaxDefault valueDescription"fig_size_x"11"fig_size_y"8"label_size"25"tick_size"20"legend_size"20"in_text_size"20"subplot_title_size"30"fig_title_size"35"markersize"10"tick_width_major"2.25"tick_length_major"5"tick_width_minor"1.75"tick_length_minor"3Examples