2012-08-14 2 views
1

i ont le code suivant, arraché de la galerielégende Centré sur exemple galerie Matplotlib

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.ticker import NullFormatter 
from itertools import groupby 
import matplotlib.pyplot as plt 
import numpy 
#fig = plt.figure(figsize=(13, 12)) 

files = ("file1","file2") 
place = (1,2) 
print files 
print place 
plt.bone() 
for f in zip(files,place): 
    print "file", f 
    # would like the two below each other, don't know how, so i clear 
    plt.clf() 
    # data comes from the files normally 
    x = np.random.randn(1000) 
    y = np.random.randn(1000) 
    z = np.random.randn(100) 

    nullfmt = NullFormatter()   # no labels 

    # definitions for the axes 
    left, width = 0.1, 0.65 
    bottom, height = 0.1, 0.65 
    bottom_h = left_h = left+width+0.02 

    rect_scatter = [left, bottom, width, height] 
    rect_histx = [left, bottom_h, width, 0.2] 
    rect_histy = [left_h, bottom, 0.2, height] 

    # start with a rectangular Figure 
    plt.figure(1, figsize=(8,8)) 
    plt.xlabel('$^{13}$C (ppm)') 
    plt.ylabel('$^{15}$H (ppm)') 


    axScatter = plt.axes(rect_scatter) 
    axHistx = plt.axes(rect_histx) 
    axHisty = plt.axes(rect_histy) 

    # no labelsfor the histgrams 
    axHistx.xaxis.set_major_formatter(nullfmt) 
    axHisty.yaxis.set_major_formatter(nullfmt) 

    # the scatter plot: 
    #axScatter.scatter(x, y) 
    axScatter.scatter(numpy.float64(x),numpy.float64(y), c=numpy.float64(z),lw=0.1,s=5) 

    # now determine nice limits by hand: 
    binwidth = 0.25 
    xymax = np.max([np.max(np.fabs(x)), np.max(np.fabs(y))]) 
    lim = (int(xymax/binwidth) + 1) * binwidth 

    axScatter.set_xlim((min(x), max(x)+binwidth)) 
    axScatter.set_ylim((min(y), max(y)+binwidth)) 
    #axScatter.set_ylim((-lim, lim)) 
    binwidth = (max(x) - min(x))/20 
    bins = np.arange(min(x), max(x) + binwidth, binwidth) 
    axHistx.hist(x, bins=bins) 
    binwidth = (max(y) - min(y))/20 
    bins = np.arange(min(y), max(y) + binwidth, binwidth) 
    axHisty.hist(y, bins=bins, orientation='horizontal') 

    axHistx.set_xlim(axScatter.get_xlim()) 
    axHisty.set_ylim(axScatter.get_ylim()) 
    plt.savefig(f[0]+"out_hist.png", format='png',dpi=1200) 
    plt.savefig(f[0]+"out_hist.svg", format='svg') 

Ce code me donne: example

Cependant, je ne sais pas où ce cadre en arrière-plan vient de. Et aussi je voudrais avoir mes sous-titres centrée sur l'intrigue, pas la chose. Enfin je ne pouvais pas pour la vie de me faire ces parcelles ci-dessous les uns des autres dans un simple JPG. Comment puis-je résoudre ces problèmes?

Répondre

1

Lorsque vous appelez plt.xlabel(), pyplot va créer un axe, c'est les axes d'arrière-plan. supprimer les deux lignes appellent plt.xlabel() & plt.ylabel() et ajouter les lignes suivantes après axScatter = plt.axes(rect_scatter)

axScatter.set_xlabel('$^{13}$C (ppm)') 
axScatter.set_ylabel('$^{15}$H (ppm)')  

enter image description here

Questions connexes