如何设置AxesSubPlot的宽度?

时间:2012-05-29 06:47:23

标签: python matplotlib

我有一个640点的数据集,但是在子图中绘制它将轴缩放到700.如何将x轴设置为0到640本身而不是缩放?

通常,如何将轴设置为仲裁措施?请解释设置轴的选项。


以下是我正在使用的代码:

    self.figure = Figure()
    self.figure.set_size_inches( (15,3) )
    self.figure.set_dpi(80)

    self.picture = self.figure.add_subplot(211)
    #self.picture.xlim(xmax=640)
    self.intensity = self.figure.add_subplot(212)

self.picture.imshow(pic)
#... where projection happens to be 640 px wide
self.intensity.plot(projection)

2 个答案:

答案 0 :(得分:3)

假设我正确理解了这个问题,您可以使用Axes.set_xlim()功能。你几乎在你的问题中做得对,但你对set_xlim的呼吁不太正确,必须在你绘制数据之后:

import matplotlib.pyplot as plt

hf = plt.figure()
hf.set_size_inches( (15,3) )
hf.figure.set_dpi(80)

ha = hf.add_subplot(211)

pic = ...

ha.imshow(pic)

ha.set_xlim((0,640)) # This sets the x axis to range from 0 to 640.

如果您只想调整x轴的上限或下限,可以使用left的{​​{1}}和right关键字参数。例如,要将x轴的上限设置为640,但保留下限,就像你可以使用的那样

Axes.set_xlim

这里需要注意两点:

  • 这些关键字参数与ha.set_xlim(right=640) 不同,后者接受关键字参数Axes.set_ylimbottom

  • 这也与top不同,matplotlib.pyplot.xlim接受关键字参数xminxmax(这是@ tsyu80实际上正在讨论的函数)和{{ 1}},接受matplotlib.pyplot.ylimymin

答案 1 :(得分:2)

首先要介绍一些设置代码:

import numpy as np
import matplotlib.pyplot as plt

figure, (picture, intensity) = plt.subplots(nrows=2, figsize=(15, 3))
figure.set_dpi(80)
picture.imshow(np.random.uniform(size=(5, 50)))
intensity.plot(np.random.random(size=641))

请注意,对plt.subplots的调用(最后的s很重要;没有s的功能不同)需要matplotlib 1.1或更高版本。但是您的原始示例设置也可以。另请注意,轴的缩放比例为700而不是640,因为matplotlib更愿意在700处绘制一个刻度,并且表示额外的空白区域并不是一件大事。

编辑:我只是想指出figsize参数,dpi设置,而picture轴与原始问题无关,但是我添加它们以匹配原始示例。

正如克里斯提到的,你可以打电话给

intensity.set_xlim((0, 640))

您可以传入关键字参数,只调整所需的参数:

intensity.set_xlim(right=640)

如果您知道需要严格的轴限制,但又不想手动设置,则轴对象可以根据绘制的数据计算出来。

intensity.autoscale(tight=True)

或者,如果您只想缩放x - 轴:

intensity.autoscale(axis='x', tight=True)

注意autoscale是特殊的,因为如果您的数据限制发生变化,它会重新调整(例如,如果您绘制另一个有680个点的数据集)。

或者,您可以使用margins方法:

intensity.margins(0)

这会将 xy轴限制设置为数据限制并添加指定的填充---在本例中为0.如果您确实需要一些间距在y方向,你可以写:

intensity.margins(0, 0.1)

增加了等于y数据间隔的10%的间距。这些功能都可以满足您的需求,但不同的呼叫签名(和行为)在不同的情况下非常有用。

编辑:根据Chris的建议将固定关键字参数设置为set_xlim