轴类-以给定单位显式设置轴的尺寸(宽度/高度) [英] Axes class - set explicitly size (width/height) of axes in given units

查看:130
本文介绍了轴类-以给定单位显式设置轴的尺寸(宽度/高度)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用matplotlib创建一个图形,在其中可以显式指定轴的大小,即,我想设置轴bbox的宽度和高度.

I want to to create a figure using matplotlib where I can explicitly specify the size of the axes, i.e. I want to set the width and height of the axes bbox.

我到处环顾四周,但找不到解决方案.我通常会发现如何调整整个图形的尺寸(包括刻度和标签),例如使用fig, ax = plt.subplots(figsize=(w, h))

I have looked around all over and I cannot find a solution for this. What I typically find is how to adjust the size of the complete Figure (including ticks and labels), for example using fig, ax = plt.subplots(figsize=(w, h))

这对我来说非常重要,因为我想使轴的比例为1:1,即纸中的1单位实际上等于1单位.例如,如果xrange是0到10,且主要刻度= 1且x轴是10cm,则1个主要刻度= 1cm.我将把该图另存为pdf,以将其导入到乳胶文档中.

This is very important for me as I want to have a 1:1 scale of the axes, i.e. 1 unit in paper is equal to 1 unit in reality. For example, if xrange is 0 to 10 with major tick = 1 and x axis is 10cm, then 1 major tick = 1cm. I will save this figure as pdf to import it to a latex document.

此问题提出了类似的主题,但是答案不能解决我的问题(使用plt.gca().set_aspect('equal', adjustable='box')代码)

This question brought up a similar topic but the answer does not solve my problem (using plt.gca().set_aspect('equal', adjustable='box') code)

通过其他问题,我看到有可能获得轴的大小,但不能显式地修改它们.

From this other question I see that it is possible to get the axes size, but not how to modify them explicitly.

任何想法都可以设置轴框的大小,而不仅仅是图形的大小.图形尺寸应适应轴尺寸.

Any ideas how I can set the axes box size and not just the figure size. The figure size should adapt to the axes size.

谢谢!

对于熟悉乳胶中的 pgfplots 的人来说,它希望具有类似于scale only axis选项的内容(例如,请参见此处).

For those familiar with pgfplots in latex, it will like to have something similar to the scale only axis option (see here for example).

推荐答案

轴尺寸由图形尺寸和图形间距确定,可以使用

The axes size is determined by the figure size and the figure spacings, which can be set using figure.subplots_adjust(). In reverse this means that you can set the axes size by setting the figure size taking into acount the figure spacings:

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()

这篇关于轴类-以给定单位显式设置轴的尺寸(宽度/高度)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆