【问题标题】:Centering caption on Matplotlib gallery exampleMatplotlib 库示例上的居中标题
【发布时间】:2012-08-10 13:48:57
【问题描述】:

我有以下代码,从图库中提取

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

这段代码给了我:

但是,我不知道背景中的这个框架是从哪里来的。而且我想让我的字幕集中在情节上,而不是整个事情。最后,我无法在一个简单的 JPG 中将这些图放在一起。我该如何解决这些问题?

【问题讨论】:

    标签: matplotlib label subplot


    【解决方案1】:

    当您调用plt.xlabel() 时,pyplot 将创建一个轴,即背景轴。删除两行 call plt.xlabel() & plt.ylabel() 并在axScatter = plt.axes(rect_scatter) 之后添加以下行

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

    【讨论】:

      猜你喜欢
      • 2017-05-21
      • 2023-04-01
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2017-03-03
      相关资源
      最近更新 更多