Python 如何设置AxesSubPlot的宽度?

Python 如何设置AxesSubPlot的宽度?,python,matplotlib,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) #se

我有一个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)

假设我正确理解了问题,您可以使用该函数。您的问题几乎是对的,但您对
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轴的上限或下限,可以使用
轴的
关键字参数。设置\u xlim
。例如,将x轴的上限设置为640,但将下限保留为可以使用的值

ha.set_xlim(right=640)
这里有两点需要注意:

  • 这些关键字参数与
    轴不同。set_ylim
    ,它接受关键字参数
    底部
    顶部

  • 这也不同于
    matplotlib.pyplot.xlim
    ,后者接受关键字参数
    xmin
    xmax
    (这实际上是@tsyu80所说的函数),以及
    matplotlib.pyplot.ylim
    ,后者接受
    ymin
    ymax


假设我正确理解问题,您可以使用该函数。您的问题几乎是对的,但您对
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轴的上限或下限,可以使用
轴的
关键字参数。设置\u xlim
。例如,将x轴的上限设置为640,但将下限保留为可以使用的值

ha.set_xlim(right=640)
这里有两点需要注意:

  • 这些关键字参数与
    轴不同。set_ylim
    ,它接受关键字参数
    底部
    顶部

  • 这也不同于
    matplotlib.pyplot.xlim
    ,后者接受关键字参数
    xmin
    xmax
    (这实际上是@tsyu80所说的函数),以及
    matplotlib.pyplot.ylim
    ,后者接受
    ymin
    ymax


首先要遵循一些设置代码:

将numpy导入为np
将matplotlib.pyplot作为plt导入
图(图片,强度)=plt.子图(nrows=2,figsize=(15,3))
图.设置dpi(80)
picture.imshow(np.random.uniform(大小=(5,50)))
强度图(np.random.random(大小=641))
请注意,调用
plt.subplot
(末尾的
s
很重要;没有
s
,还有一个不同的函数)需要matplotlib 1.1或更高版本。但是您最初的示例设置也可以工作。还要注意的是,轴被缩放为700而不是640,因为matplotlib更愿意在700处画一个记号,并且认为额外的空白空间并不是什么大问题

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

正如Chris提到的,你可以打电话

intensity.set_xlim((0640))
您可以通过传入关键字参数来仅调整所需参数:

强度设置(右=640) 如果知道需要严格的轴限制,但不想手动设置,则axis对象可以根据已打印的数据计算出来

intensity.autoscale(紧密=真)
或者,如果您只想缩放
x
-轴:

intensity.autoscale(轴=x',紧密=真)
自动缩放
非常特殊,因为如果数据限制发生变化(例如,如果绘制另一个有680个点的数据集),它将重新调整

或者,您可以使用
边距
方法:

intensity.margins(0)
这将
x
y
轴限制设置为数据限制,并添加指定的填充——在本例中为0。如果您确实希望在
y
方向上有一些间距,则可以编写:

intensity.margins(0,0.1)
它添加的间距等于
y
数据间隔的10%。这些函数都可以实现您想要的功能,但它们不同的调用签名(和行为)在不同的情况下很有用


编辑:根据Chris的建议,将关键字参数固定为
set\xlim

首先是一些设置代码:

将numpy导入为np
将matplotlib.pyplot作为plt导入
图(图片,强度)=plt.子图(nrows=2,figsize=(15,3))
图.设置dpi(80)
picture.imshow(np.random.uniform(大小=(5,50)))
强度图(np.random.random(大小=641))
请注意,调用
plt.subplot
(末尾的
s
很重要;没有
s
,还有一个不同的函数)需要matplotlib 1.1或更高版本。但是您最初的示例设置也可以工作。还要注意的是,轴被缩放为700而不是640,因为matplotlib更愿意在700处画一个记号,并且认为额外的空白空间并不是什么大问题

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

正如Chris提到的,你可以打电话

intensity.set_xlim((0640))
您可以通过传入关键字参数来仅调整所需参数:

强度设置(右=640)
如果您知道需要严格的轴限制,但不想手动设置,则axis对象可以根据已打印的数据进行计算