轴类-以给定单位明确设置轴的尺寸(宽度/高度)
问题内容:
我想使用matplotlib创建一个图形,在其中可以显式指定轴的大小,即我要设置轴bbox的宽度和高度。
我到处环顾四周,找不到解决方案。我通常会发现如何调整整个图形的大小(包括刻度和标签),例如使用fig, ax = plt.subplots(figsize=(w, h))
这对我来说非常重要,因为我想使轴比例为1:1,即纸中的1单位实际上等于1单位。例如,如果xrange是0到10,且主要刻度=
1且x轴是10cm,则1个主要刻度= 1cm。我将此图另存为pdf,以将其导入到乳胶文档中。
这个问题提出了一个类似的话题,但是答案不能解决我的问题(使用plt.gca().set_aspect('equal', adjustable='box')
代码)
从另一个问题中,我看到可以获取轴的大小,但是不能明确地修改它们。
关于如何设置坐标轴框大小而不只是图形尺寸的任何想法。图形尺寸应适应轴尺寸。
谢谢!
对于那些熟悉乳胶pgfplots的人来说,它会喜欢与该scale only axis
选项类似的东西(例如,请参见此处)。
问题答案:
轴尺寸由图形尺寸和图形间距确定,可以使用设置figure.subplots_adjust()
。相反,这意味着您可以通过考虑图形间距来设置图形尺寸来设置轴尺寸:
import matplotlib.pyplot as plt
def set_size(w,h, ax=None):
""" w, h: width, height in inches """
if not ax: ax=plt.gca()
l = ax.figure.subplotpars.left
r = ax.figure.subplotpars.right
t = ax.figure.subplotpars.top
b = ax.figure.subplotpars.bottom
figw = float(w)/(r-l)
figh = float(h)/(t-b)
ax.figure.set_size_inches(figw, figh)
fig, ax=plt.subplots()
ax.plot([1,3,2])
set_size(5,5)
plt.show()