在matplotlib中指定地物尺寸(以厘米为单位)

在matplotlib中指定地物尺寸(以厘米为单位),matplotlib,Matplotlib,我想知道您是否可以在matplotlib中以厘米为单位指定图形的大小。此刻我写道: def cm2inch(value): return value/2.54 fig = plt.figure(figsize=(cm2inch(12.8), cm2inch(9.6))) 但是有一种本土的方法吗?这不是一个问题的答案,有本土的方法吗?'',但我认为,有一种更优雅的方法: def cm2inch(*tupl): 英寸=2.54 如果isinstance(tupl[0],tuple): 返

我想知道您是否可以在matplotlib中以厘米为单位指定图形的大小。此刻我写道:

def cm2inch(value):
    return value/2.54

fig = plt.figure(figsize=(cm2inch(12.8), cm2inch(9.6)))

但是有一种本土的方法吗?

这不是一个问题的答案,有本土的方法吗?'',但我认为,有一种更优雅的方法:

def cm2inch(*tupl):
英寸=2.54
如果isinstance(tupl[0],tuple):
返回元组(元组[0]中i的i/英寸)
其他:
返回元组(元组中i的i/英寸)
然后可以发布
plt.figure(figsize=cm2inch(12.8,9.6))
,我认为这是一种更干净的方法。这个实现还允许我们使用
cm2inch((12.8,9.6))
,我个人不喜欢,但有些人可能会这样做



编辑:尽管目前还没有办法以本机方式进行编辑,但我找到了一个讨论。

AFIK
matplotlib
没有转换功能

<>如果你经常需要转换单位,你可以考虑使用。它还提供
NumPy
支持

对于您的示例,您可以执行以下操作:

from pint import UnitRegistry
ureg = UnitRegistry()

width_cm, height_cm = (12.8 * ureg.centimeter, 9.6 * ureg.centimeter)
width_inch, height_inch = (width_cm.to(ureg.inch), height_cm.to(ureg.inch))

figsize_inch = (width_inch.magnitude, height_inch.magnitude)
fig = plt.figure(figsize=figsize_inch)

我已经向GitHub上的matplotlib repo提交了一个拉取请求,以包括图形的set_size_cm和get_size_cm功能()


如果它被接受,这将允许您使用本机方法设置厘米大小。

我认为提供的解决方案也很有帮助。 所以,在你的情况下

cm = 1/2.54  # centimeters in inches
plt.figure(figsize=(12.8*cm, 9.6*cm))

我认为你的方法很好。Matplotlib没有本机系统来处理单元。这令人失望,对这种功能使用转换有点烦人。不过,在mpl中还有更重要的东西需要实现;)为什么不在matplotlib上添加此函数来执行拉取请求呢?我认为mpl只需要英寸,因为内部分辨率都存储为dpi。或者
def cm2inch(*tupl):如果type(tupl[0])是tuple else(I/2.54表示tupl中的I),则返回(I/2.54表示tupl中的I[0])
如果您不介意退回一台发电机并在6年后编写一行代码,传奇故事将继续