0

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

2 回答 2

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 轴的上限或下限,可以使用 的leftright关键字参数Axes.set_xlim。例如,将 x 轴的上限设置为 640,但将下限保留为您可以使用的任何值

ha.set_xlim(right=640)

这里需要注意两点:

  • 这些关键字参数不同于Axes.set_ylim,后者接受关键字参数bottomtop

  • 这也不同于matplotlib.pyplot.xlim,它接受关键字参数xminand xmax(这是@tsyu80 实际上正在谈论的函数),and matplotlib.pyplot.ylim,它接受yminand ymax

于 2012-05-31T14:08:22.690 回答
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-axis:

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

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

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

intensity.margins(0)

这会将轴限制 x轴限制设置为数据限制并y添加指定的填充——在本例中为 0。如果您实际上想要在 -y方向上留一些间距,那么您可以编写:

intensity.margins(0, 0.1)

这增加了等于y数据间隔的 10% 的间距。这些函数都做你想做的事,但它们不同的调用签名(和行为)在不同的情况下很有用。

编辑set_xlim:根据 Chris 的建议修复了关键字参数。

于 2012-05-31T18:05:35.690 回答