轴类-以给定单位明确设置轴的尺寸(宽度/高度)

发布于 2021-01-29 16:41:14

我想使用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选项类似的东西(例如,请参见此处)。

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    轴尺寸由图形尺寸和图形间距确定,可以使用设置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()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看