.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_graphs/plot_graphs_basics.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_graphs_plot_graphs_basics.py: A quick start guide to graphs ============================== .. GENERATED FROM PYTHON SOURCE LINES 5-6 .. code-block:: default # sphinx_gallery_thumbnail_number = 4 .. GENERATED FROM PYTHON SOURCE LINES 7-8 In this example, we show how to create graphs. We show how to create and configure its axes and its colors. We show how to create a plot based on the combination of several plots. .. GENERATED FROM PYTHON SOURCE LINES 11-15 The `draw` method the `Graph` class ----------------------------------- The simplest way to create a graphics is to use the `draw` method. The `Normal` distribution for example provides a method to draw the density function of the gaussian distribution. .. GENERATED FROM PYTHON SOURCE LINES 17-24 .. code-block:: default import openturns.viewer as otv import pylab as pl import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 25-28 .. code-block:: default n = ot.Normal() n .. raw:: html

Normal(mu = 0, sigma = 1)



.. GENERATED FROM PYTHON SOURCE LINES 29-32 .. code-block:: default graph = n.drawPDF() view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_001.png :alt: plot graphs basics :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 33-34 To configure the look of the plot, we can first observe the type of graphics returned by the `drawPDF` method returns: it is a `Graph`. .. GENERATED FROM PYTHON SOURCE LINES 36-39 .. code-block:: default graph = n.drawPDF() type(graph) .. GENERATED FROM PYTHON SOURCE LINES 40-41 The `Graph` class provides several methods to configure the legends, the title and the colors. Since a graphics can contain several sub-graphics, the `setColors` takes a list of colors as inputs argument: each item of the list corresponds to the sub-graphics. .. GENERATED FROM PYTHON SOURCE LINES 43-51 .. code-block:: default graph.setXTitle("N") graph.setYTitle("PDF") graph.setTitle( "Probability density function of the standard gaussian distribution") graph.setLegends(["N"]) graph.setColors(["blue"]) view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_002.png :alt: Probability density function of the standard gaussian distribution :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 52-56 Combine several graphics ------------------------ In order to combine several graphics, we can use the `add` method. .. GENERATED FROM PYTHON SOURCE LINES 58-59 Let us create an empirical histogram from a sample. .. GENERATED FROM PYTHON SOURCE LINES 61-63 .. code-block:: default sample = n.getSample(100) .. GENERATED FROM PYTHON SOURCE LINES 64-67 .. code-block:: default histo = ot.HistogramFactory().build(sample).drawPDF() view = viewer.View(histo) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_003.png :alt: X0 PDF :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 68-69 Then we add the histogram to the `graph` with the `add` method. The `graph` then contains two plots. .. GENERATED FROM PYTHON SOURCE LINES 71-74 .. code-block:: default graph.add(histo) view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_004.png :alt: Probability density function of the standard gaussian distribution :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 75-79 Draw a cloud ------------ The `Cloud` class creates clouds of bidimensional points. To demonstrate it, let us create two gaussian distributions in two dimensions. .. GENERATED FROM PYTHON SOURCE LINES 81-82 Create a Funky distribution .. GENERATED FROM PYTHON SOURCE LINES 82-89 .. code-block:: default corr = ot.CorrelationMatrix(2) corr[0, 1] = 0.2 copula = ot.NormalCopula(corr) x1 = ot.Normal(-1., 1) x2 = ot.Normal(2, 1) x_funk = ot.ComposedDistribution([x1, x2], copula) .. GENERATED FROM PYTHON SOURCE LINES 90-91 Create a Punk distribution .. GENERATED FROM PYTHON SOURCE LINES 91-95 .. code-block:: default x1 = ot.Normal(1., 1) x2 = ot.Normal(-2, 1) x_punk = ot.ComposedDistribution([x1, x2], copula) .. GENERATED FROM PYTHON SOURCE LINES 96-97 Let us mix these two distributions. .. GENERATED FROM PYTHON SOURCE LINES 99-101 .. code-block:: default mixture = ot.Mixture([x_funk, x_punk], [0.5, 1.]) .. GENERATED FROM PYTHON SOURCE LINES 102-105 .. code-block:: default n = 500 sample = mixture.getSample(n) .. GENERATED FROM PYTHON SOURCE LINES 106-111 .. code-block:: default graph = ot.Graph("n=%d" % (n), "X1", "X2", True, '') cloud = ot.Cloud(sample) graph.add(cloud) view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_005.png :alt: n=500 :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 112-115 We sometimes want to customize the graphics by choosing the type of point (square, triangle, circle, etc...), of line (continuous, dashed, etc...) or another parameter. We can know the list of possible values with the corresponding `getValid` method. For example, the following function returns the possible values of the `PointStyle` parameter. .. GENERATED FROM PYTHON SOURCE LINES 117-119 .. code-block:: default ot.Drawable.GetValidPointStyles() .. raw:: html

[bullet,circle,diamond,dot,fcircle,fdiamond,fsquare,ftriangleup,none,plus,square,star,times,triangledown,triangleup]#15



.. GENERATED FROM PYTHON SOURCE LINES 120-121 The following method returns the list of colors. .. GENERATED FROM PYTHON SOURCE LINES 123-125 .. code-block:: default ot.Drawable.GetValidColors()[0:10] .. raw:: html

[aliceblue,antiquewhite,antiquewhite1,antiquewhite2,antiquewhite3,antiquewhite4,aquamarine,aquamarine1,aquamarine2,aquamarine3]#10



.. GENERATED FROM PYTHON SOURCE LINES 126-127 In the following graphics, we use the "aquamarine1" color with "fcircle" circles. .. GENERATED FROM PYTHON SOURCE LINES 129-136 .. code-block:: default graph = ot.Graph("n=%d" % (n), "X1", "X2", True, '') cloud = ot.Cloud(sample) cloud.setColor("aquamarine1") cloud.setPointStyle("fcircle") graph.add(cloud) view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_006.png :alt: n=500 :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_006.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 137-141 Configure the style of points and the thickness of a curve ---------------------------------------------------------- Assume that we want to plot the sine curve from -2 to 2. The simplest way is to use the `draw` method of the function. .. GENERATED FROM PYTHON SOURCE LINES 143-145 .. code-block:: default g = ot.SymbolicFunction("x", "sin(x)") .. GENERATED FROM PYTHON SOURCE LINES 146-149 .. code-block:: default graph = g.draw(-2, 2) view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_007.png :alt: y0 as a function of x :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_007.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 150-151 I would rather get a dashed curve: let us search for the available line styles. .. GENERATED FROM PYTHON SOURCE LINES 153-156 .. code-block:: default ot.Drawable.GetValidLineStyles() .. raw:: html

[blank,solid,dashed,dotted,dotdash,longdash,twodash]



.. GENERATED FROM PYTHON SOURCE LINES 157-158 In order to use the `Curve` class, it will be easier if we have a method to generate a `Sample` containing points regularly spaced in an interval. .. GENERATED FROM PYTHON SOURCE LINES 160-169 .. code-block:: default def linearSample(xmin, xmax, npoints): '''Returns a sample created from a regular grid from xmin to xmax with npoints points.''' step = (xmax-xmin)/(npoints-1) rg = ot.RegularGrid(xmin, step, npoints) vertices = rg.getVertices() return vertices .. GENERATED FROM PYTHON SOURCE LINES 170-173 .. code-block:: default x = linearSample(-2, 2, 50) y = g(x) .. GENERATED FROM PYTHON SOURCE LINES 174-182 .. code-block:: default graph = ot.Graph("Sinus", "x", "sin(x)", True) curve = ot.Curve(x, y) curve.setLineStyle("dashed") curve.setLineWidth(4) graph.add(curve) view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_008.png :alt: Sinus :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_008.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 183-187 Create colored curves --------------------- In some situations, we want to create curves with different colors. In this case, the following function generates a color corresponding to the `indexCurve` integer in a ensemble of `maximumNumberOfCurves` curves. .. GENERATED FROM PYTHON SOURCE LINES 189-197 .. code-block:: default def createHSVColor(indexCurve, maximumNumberOfCurves): '''Create a HSV color for the indexCurve-th curve from a sample with maximum size equal to maximumNumberOfCurves''' color = ot.Drawable.ConvertFromHSV( indexCurve * 360.0/maximumNumberOfCurves, 1.0, 1.0) return color .. GENERATED FROM PYTHON SOURCE LINES 198-200 .. code-block:: default pofa = ot.HermiteFactory() .. GENERATED FROM PYTHON SOURCE LINES 201-212 .. code-block:: default graph = ot.Graph("Orthonormal Hermite polynomials", "x", "y", True, "bottomright") degreemax = 5 for k in range(degreemax): pk = pofa.build(k) curve = pk.draw(-3., 3., 50) curve.setLegends(["P%d" % (k)]) curve.setColors([createHSVColor(k, degreemax)]) graph.add(curve) view = viewer.View(graph) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_009.png :alt: Orthonormal Hermite polynomials :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_009.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 213-219 Create matrices of graphics --------------------------- The library does *not* has objects to create a grid of graphics. However, we can use the `add_subplot` function from Matplotlib. Let us create two graphics of the PDF and CDF of the following gaussian distribution.. .. GENERATED FROM PYTHON SOURCE LINES 221-225 .. code-block:: default n = ot.Normal() myPDF = n.drawPDF() myCDF = n.drawCDF() .. GENERATED FROM PYTHON SOURCE LINES 228-229 We create a figure with the `figure` function from Matplotlib, then we add two graphics with the `add_subplot` function. We use the `viewer.View` function to create the required Matplotlib object. Since we are not interested by the output of the `View` function, we use the dummy variable `_` as output. The title is finally configured with `suptitle`. .. GENERATED FROM PYTHON SOURCE LINES 231-238 .. code-block:: default fig = pl.figure(figsize=(12, 4)) ax_pdf = fig.add_subplot(1, 2, 1) _ = otv.View(myPDF, figure=fig, axes=[ax_pdf]) ax_cdf = fig.add_subplot(1, 2, 2) _ = otv.View(myCDF, figure=fig, axes=[ax_cdf]) _ = fig.suptitle("The gaussian") .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_010.png :alt: The gaussian :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_010.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 239-241 Save a plot into a file ----------------------- .. GENERATED FROM PYTHON SOURCE LINES 243-244 The `View` class has a `save` method which saves the graph into an image. .. GENERATED FROM PYTHON SOURCE LINES 248-253 .. code-block:: default n = ot.Normal() graph = n.drawPDF() view = otv.View(graph) view.save("normal.png") .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_011.png :alt: plot graphs basics :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_011.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 254-255 We can use the `dpi` option to configure the resolution in dots per inch. .. GENERATED FROM PYTHON SOURCE LINES 257-259 .. code-block:: default view.save("normal-100dpi.png", dpi=100) .. GENERATED FROM PYTHON SOURCE LINES 260-262 Configure the size of a graph with matplotlib --------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 266-267 We first create a graph containing the PDF of a gaussian distribution .. GENERATED FROM PYTHON SOURCE LINES 269-272 .. code-block:: default n = ot.Normal() graph = n.drawPDF() .. GENERATED FROM PYTHON SOURCE LINES 273-274 The `figure_kw` keyword argument sets the optional arguments of the figure. In the following statement, we set the figure size in inches .. GENERATED FROM PYTHON SOURCE LINES 276-278 .. code-block:: default view = otv.View(graph, figure_kw={"figsize": (12, 8)}) .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_012.png :alt: plot graphs basics :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_012.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 279-280 The `getFigure` method returns the current figure. This allows to configure it as any other Matplotlib figure. In the following example, we configure the `suptitle`. .. GENERATED FROM PYTHON SOURCE LINES 282-286 .. code-block:: default fig = view.getFigure() fig.suptitle("The suptitle") fig .. rst-class:: sphx-glr-script-out Out: .. code-block:: none
.. GENERATED FROM PYTHON SOURCE LINES 287-288 The `plot_kw` optional argument sets the arguments of the plot. In the following example, we set the color of the plot in blue. .. GENERATED FROM PYTHON SOURCE LINES 290-292 .. code-block:: default view = otv.View(graph, plot_kw={'color': 'blue'}) plt.show() .. image-sg:: /auto_graphs/images/sphx_glr_plot_graphs_basics_013.png :alt: plot graphs basics :srcset: /auto_graphs/images/sphx_glr_plot_graphs_basics_013.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 1.704 seconds) .. _sphx_glr_download_auto_graphs_plot_graphs_basics.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_graphs_basics.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_graphs_basics.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_