Múltiples figuras en una sola ventana.

Quiero crear una función que trace en pantalla un conjunto de figuras en una sola ventana. Por ahora escribo este código:

import pylab as pl def plot_figures(figures): """Plot a dictionary of figures. Parameters ---------- figures :  dictionary """ for title in figures: pl.figure() pl.imshow(figures[title]) pl.gray() pl.title(title) pl.axis('off')</code> </pre>
<p>  Funciona perfectamente, pero me gustaría tener la opción de trazar todas las figuras en una sola ventana.  Y este código no lo hace.  Leí algo sobre la ttwig secundaria, pero parece bastante complicado. </p><ul><li><a href="https://www.pythond.com/49859/matplotlib-pandas-no-xlabel-y-xticks-para-ejes-twinx-en-figuras-subplotadas.html" rel="bookmark" title="matplotlib - pandas - No xlabel y xticks para ejes twinx en figuras subplotadas">matplotlib - pandas - No xlabel y xticks para ejes twinx en figuras subplotadas</a></li><li><a href="https://www.pythond.com/15430/matplotlib-subplot.html" rel="bookmark" title="Matplotlib: subplot">Matplotlib: subplot</a></li><li><a href="https://www.pythond.com/38573/matplotlib-no-xlabel-y-xticks-para-ejes-twinx-en-figuras-subplotadas.html" rel="bookmark" title="matplotlib - No xlabel y xticks para ejes twinx en figuras subplotadas">matplotlib - No xlabel y xticks para ejes twinx en figuras subplotadas</a></li><li><a href="https://www.pythond.com/7252/actualizacion-de-subplotis-de-barras-y-trazados-en-iteraciones-de-bucle.html" rel="bookmark" title="Actualización de subplotis de barras y trazados en iteraciones de bucle">Actualización de subplotis de barras y trazados en iteraciones de bucle</a></li><li><a href="https://www.pythond.com/5321/ajustando-el-diseno-de-subplot-con-pandas.html" rel="bookmark" title="Ajustando el diseño de subplot con pandas">Ajustando el diseño de subplot con pandas</a></li></ul>
</p>        <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-4943387893641281"
     data-ad-slot="2234558470"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
    <div class="list-group list-group-flush">
        


	<div class="list-group-item list-group-item-action flex-column align-items-start">
		      	<p>  Puede definir una función basada en el comando de subplots (tenga en cuenta la <em>s</em> al final, diferente del comando de <code>subplot</code> señalado por urinieto) de <code>matplotlib.pyplot</code> . </p>
<p>  A continuación se muestra un ejemplo de una función de este tipo, basada en la suya, que permite trazar múltiples ejes en una figura.  Puede definir el número de filas y columnas que desea en el diseño de la figura. </p>
<pre> <code>def plot_figures(figures, nrows = 1, ncols=1): """Plot a dictionary of figures. Parameters ---------- figures : <title, figure> dictionary ncols : number of columns of subplots wanted in the display nrows : number of rows of subplots wanted in the figure """ fig, axeslist = plt.subplots(ncols=ncols, nrows=nrows) for ind,title in enumerate(figures): axeslist.ravel()[ind].imshow(figures[title], cmap=plt.gray()) axeslist.ravel()[ind].set_title(title) axeslist.ravel()[ind].set_axis_off() plt.tight_layout() # optional</code> </pre>
<p>  Básicamente, la función crea un número de ejes en las figuras, según el número de filas ( <code>nrows</code> ) y columnas ( <code>ncols</code> ) que desee, y luego itera sobre la lista de ejes para trazar sus imágenes y agrega el título para cada una de ellas. . </p>
<p>  Tenga en cuenta que si solo tiene una imagen en su diccionario, su syntax anterior <code>plot_figures(figures)</code> funcionará ya que <code>nrows</code> y <code>ncols</code> están configurados en <code>1</code> de forma predeterminada. </p>
<p>  Un ejemplo de lo que puedes obtener: </p>
<pre> <code>import matplotlib.pyplot as plt import numpy as np # generation of a dictionary of (title, images) number_of_im = 6 figures = {'im'+str(i): np.random.randn(100, 100) for i in range(number_of_im)} # plot of the images in a figure, with 2 rows and 3 columns plot_figures(figures, 2, 3)</code> </pre>
<p><img src="http://sofes.miximages.com/image/pxiC8.png" alt="ex"/></p>
</div>
</li><!-- #comment-## -->
<div class="list-group-item list-group-item-action flex-column align-items-start">
		      	<p>  Deberías usar un <code>subplot</code> . </p>
<p>  En tu caso, sería algo como esto (si los quieres uno encima del otro): </p>
<pre> <code>fig = pl.figure(1) k = 1 for title in figures: ax = fig.add_subplot(len(figures),1,k) ax.imshow(figures[title]) ax.gray() ax.title(title) ax.axis('off') k += 1</code> </pre>
<p>  Echa un vistazo a la documentación para otras opciones. </p>
</div>
</li><!-- #comment-## -->
<div class="list-group-item list-group-item-action flex-column align-items-start">
		      	<p>  No estoy seguro de la razón exacta por la que no pude obtener la respuesta aceptada utilizando mis datos, pero aquí está mi solución si a alguien le importa usarla. </p>
<p>  X_train es una lista de imágenes en este caso, mientras que y_train es una etiqueta numérica.  La variable de índice se selecciona aleatoriamente y tenemos un número de parada de 8 para finalizar la operación. </p>
<p>  La llamada de las figuras de la ttwig es un diccionario de las imágenes / tags que se mostrarán y el 2 representa las filas, mientras que el 4 representa las columnas. </p>
<pre> <code>number_to_stop = 8 figures = {} for i in range(number_to_stop): index = random.randint(0, n_train-1) figures[y_train[index]] = X_train[index] plot_figures(figures, 2, 4)</code> </pre>
<p> <img src="http://sofes.miximages.com/image/wkByN.png" alt="introduzca la descripción de la imagen aquí"/> </p>
</div>
</li><!-- #comment-## -->
<div class="list-group-item list-group-item-action flex-column align-items-start">
		      	<p>  Sobre la base de la respuesta de: ¿Cómo mostrar correctamente varias imágenes en una figura?  , aquí hay otro método: </p>
<pre> <code>import math import numpy as np import matplotlib.pyplot as plt def plot_images(np_images, titles = [], columns = 5, figure_size = (24, 18)): count = np_images.shape[0] rows = math.ceil(count / columns) fig = plt.figure(figsize=figure_size) subplots = [] for index in range(count): subplots.append(fig.add_subplot(rows, columns, index + 1)) if len(titles): subplots[-1].set_title(str(titles[index])) plt.imshow(np_images[index]) plt.show()</code> </pre>
</div>
</li><!-- #comment-## -->

 	</div>
		
        </div>
<ul>
</ul>    
    </div>
    
</div>

   <div class="clearfix mt-5"></div>
    <hr />
<footer>
        <ul class="list-inline text-center">
        <li class="list-inline-item">© 2017 Desarrollo de Python</li>
        <li class="list-inline-item"><a href="/topics">Topics</a></li>
        <li class="list-inline-item"><a href="#">Terms</a></li>
        <li class="list-inline-item"><a href="#">Privacy Policy</a></li>
        </ul>
</footer>

</div>     
    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
  </body>
<!-- Default Statcounter code for Pythond.com
http://www.pythond.com -->
<script type="text/javascript">
var sc_project=11834239; 
var sc_invisible=1; 
var sc_security="e0c6971b"; 
</script>
<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"
async></script>
<noscript><div class="statcounter"><a title="Web Analytics
Made Easy - StatCounter" href="https://statcounter.com/"
target="_blank"><img class="statcounter"
src="https://c.statcounter.com/11834239/0/e0c6971b/1/"
alt="Web Analytics Made Easy -
StatCounter"></a></div></noscript>
<!-- End of Statcounter Code -->
</html>