2015-04-12 4 views
62

ho le seguenti grafici:impostazioni larghezza del disegno di notebook ipython

sound signals

Sarebbe aspetto molto più gradevole se hanno la stessa larghezza. Hai idea di come farlo nel notebook ipython quando sto usando %matplotlib inline?

UPDATE:

Per generare entrambe le figure Sto usando le seguenti funzioni:

import numpy as np 
import matplotlib.pyplot as plt 

def show_plots2d(title, plots, points, xlabel = '', ylabel = ''): 
    """ 
    Shows 2D plot. 

    Arguments: 
     title : string 
      Title of the plot. 
     plots : array_like of pairs like array_like and array_like 
      List of pairs, 
      where first element is x axis and the second is the y axis. 
     points : array_like of pairs like integer and integer 
      List of pairs, 
      where first element is x coordinate 
      and the second is the y coordinate. 
     xlabel : string 
      Label of x axis 
     ylabel : string 
      Label of y axis 
    """ 
    xv, yv = zip(*plots) 
    y_exclNone = [y[y != np.array(None)] for y in yv] 
    y_mins, y_maxs = zip(* 
     [(float(min(y)), float(max(y))) for y in y_exclNone] 
    ) 
    y_min = min(y_mins) 
    y_max = max(y_maxs) 
    y_amp = y_max - y_min 
    plt.figure().suptitle(title) 
    plt.axis(
     [xv[0][0], xv[0][-1], y_min - 0.3 * y_amp, y_max + 0.3 * y_amp] 
    ) 
    plt.xlabel(xlabel) 
    plt.ylabel(ylabel) 
    for x, y in plots: 
     plt.plot(x, y) 
    for x, y in points: 
     plt.plot(x, y, 'bo') 
    plt.show() 

def show_plot3d(title, x, y, z, xlabel = '', ylabel = '', zlabel = ''): 
    """ 
    Shows 3D plot. 

    Arguments: 
     title : string 
      Title of the plot. 
     x : array_like 
      List of x coordinates 
     y : array_like 
      List of y coordinates 
     z : array_like 
      List of z coordinates 
     xlabel : string 
      Label of x axis 
     ylabel : string 
      Label of y axis 
     zlabel : string 
      Label of z axis 
    """ 
    plt.figure().suptitle(title) 
    plt.pcolormesh(x, y, z) 
    plt.axis([x[0], x[-1], y[0], y[-1]]) 
    plt.xlabel(xlabel) 
    plt.ylabel(ylabel) 
    plt.colorbar().set_label(zlabel) 
    plt.show() 
+0

Potresti fornirci un piccolo esempio di matplotlib che stai utilizzando, solo per completezza? –

+0

ok, completo :) – pt12lol

risposta

62

Se si utilizza %pylab inline è possibile (in una nuova riga) inserire il seguente comando:

%pylab inline 
pylab.rcParams['figure.figsize'] = (10, 6) 

In questo modo tutte le cifre del documento (se non diversamente specificato) devono essere della dimensione (10, 6), dove la prima voce è la larghezza e la seconda è l'altezza.

Vedere questo post SO per ulteriori dettagli. https://stackoverflow.com/a/17231361/1419668

+8

semplicemente 'figsize (10, 6)' fa il lavoro e le volte più facili da ricordare. – Alleo

53

Se non sei in un quaderno ipython (come il PO), si può anche semplicemente dichiarare la dimensione quando si dichiara la cifra:

width = 12 
height = 12 
plt.figure(figsize=(width, height)) 
+3

Hai idea di quali unità viene misurata? –

+1

Le unità sono pollici, ma YMMV (il DPI del display potrebbe non corrispondere alle ipotesi di matplotlib). Inoltre, questo non funzionerà nell'ambiente dell'OP, un Notebook iPython! – hobs

+2

@hobs quale versione del notebook iPython stai usando? funziona per me a Jupyter. –

46

Questo è il modo l'ho fatto:

%matplotlib inline 
import matplotlib.pyplot as plt 
fig_size[0] = 12 
fig_size[1] = 9 
plt.rcParams["figure.figsize"] = fig_size 

È possibile definire le proprie dimensioni.

+6

plt.rcParams ["figure.figsize"] = [12, 9] # opere – moritzschaefer

+0

'plt.rcParams [" figure.figsize "] = (12,9)' anche questo funziona –