.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/post_process/matplotlib_opt_post_processor.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_post_process_matplotlib_opt_post_processor.py: Customize with matplotlib ========================= In this example, we will see how to modify the matplotlib figures generated by an :class:`.OptPostProcessor`. This can be useful to finely tune a graph for a presentation or a paper. .. GENERATED FROM PYTHON SOURCE LINES 25-32 .. code-block:: default from __future__ import annotations from gemseo import create_design_space from gemseo import create_discipline from gemseo import create_scenario from matplotlib import pyplot as plt .. GENERATED FROM PYTHON SOURCE LINES 33-35 We consider a minimization problem over the interval :math:`[0,1]` of the :math:`f(x)=x^2` objective function: .. GENERATED FROM PYTHON SOURCE LINES 35-42 .. code-block:: default discipline = create_discipline("AnalyticDiscipline", expressions={"y": "x**2"}) design_space = create_design_space() design_space.add_variable("x", l_b=0.0, u_b=1.0) scenario = create_scenario([discipline], "DisciplinaryOpt", "y", design_space) .. GENERATED FROM PYTHON SOURCE LINES 43-44 We solve this optimization problem with the gradient-free algorithm COBYLA: .. GENERATED FROM PYTHON SOURCE LINES 44-46 .. code-block:: default scenario.execute({"algo": "NLOPT_COBYLA", "max_iter": 10}) .. GENERATED FROM PYTHON SOURCE LINES 47-49 Then, we can post-process this :class:`.MDOScenario` with an :class:`.OptHistoryView`. .. GENERATED FROM PYTHON SOURCE LINES 49-51 .. code-block:: default opt_post_processor = scenario.post_process("OptHistoryView", show=False, save=False) .. GENERATED FROM PYTHON SOURCE LINES 52-55 Instead of saving or showing this :class:`.OptHistoryView`, and so the associated :attr:`.OptHistoryView.figures`, we will slightly modify the latter which are matplotlib figures by default. .. GENERATED FROM PYTHON SOURCE LINES 55-58 .. code-block:: default figures = opt_post_processor.figures print(figures.keys()) .. GENERATED FROM PYTHON SOURCE LINES 59-65 By default, the color bar representing the evolution of the optimization variables does not use labels. To add a custom label indicating that the optimization variables are scaled in :math:`[0,1]`, we can get the matplotlib ``Axes`` of the matplotlib figures: .. GENERATED FROM PYTHON SOURCE LINES 65-68 .. code-block:: default figure = figures["variables"] axes = figure.axes .. GENERATED FROM PYTHON SOURCE LINES 69-70 and change the y-label of the color bar: .. GENERATED FROM PYTHON SOURCE LINES 70-72 .. code-block:: default axes[1].set_ylabel("Optimization variables scales in [0,1]") .. GENERATED FROM PYTHON SOURCE LINES 73-74 We can also change the y-label of the graph: .. GENERATED FROM PYTHON SOURCE LINES 74-76 .. code-block:: default axes[0].set_ylabel("Optimization variables") .. GENERATED FROM PYTHON SOURCE LINES 77-79 Lastly, we can plot all the figures: .. GENERATED FROM PYTHON SOURCE LINES 79-81 .. code-block:: default plt.show() .. GENERATED FROM PYTHON SOURCE LINES 82-83 or save the modified figure: .. GENERATED FROM PYTHON SOURCE LINES 83-84 .. code-block:: default figure.savefig("variables.png") .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.000 seconds) .. _sphx_glr_download_examples_post_process_matplotlib_opt_post_processor.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: matplotlib_opt_post_processor.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: matplotlib_opt_post_processor.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_