在Matplotlib图库示例中居中标题

时间:2012-08-14 09:28:08

标签: matplotlib label subplot

我有以下代码,从图库中删除

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')  

这段代码告诉我: example

但是,我不知道背景中这个帧的来源。而且我想让我的标题集中在情节上,而不是整个情节。最后,我不能为我的生活在一个简单的JPG中得到这些情节。我该如何解决这些问题?

1 个答案:

答案 0 :(得分:1)

当您致电plt.xlabel()时,pyplot将创建一个轴,即背景轴。删除两行调用plt.xlabel()& plt.ylabel()并在axScatter = plt.axes(rect_scatter)

之后添加以下行
axScatter.set_xlabel('$^{13}$C (ppm)')
axScatter.set_ylabel('$^{15}$H (ppm)')    

enter image description here