Python 如何设置AxesSubPlot的宽度?
我有一个640个点的数据集,但在子图中绘制它会将轴缩放到700。如何将x轴本身设置为从0到640的范围,而不是缩放 通常,如何将轴设置为任意测量?请解释设置轴的选项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
以下是我正在使用的代码:
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
(这实际上是@tsyu80所说的函数),以及xmax
,后者接受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
(这实际上是@tsyu80所说的函数),以及xmax
,后者接受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对象可以根据已打印的数据进行计算