我想知道在matplotlib中是否可以以厘米为单位指定图形的大小。目前我的代码为:
def cm2inch(value):
return value/2.54
fig = plt.figure(figsize=(cm2inch(12.8), cm2inch(9.6)))
但是否有本地方法?
我想知道在matplotlib中是否可以以厘米为单位指定图形的大小。目前我的代码为:
def cm2inch(value):
return value/2.54
fig = plt.figure(figsize=(cm2inch(12.8), cm2inch(9.6)))
但是否有本地方法?
这不是对问题“有原生的方法吗?”的回答,但我认为有一种更优雅的方式:
def cm2inch(*tupl):
inch = 2.54
if isinstance(tupl[0], tuple):
return tuple(i/inch for i in tupl[0])
else:
return tuple(i/inch for i in tupl)
那么可以使用plt.figure(figsize=cm2inch(12.8, 9.6))
来创建图形,我认为这是一种更加简洁的方式。实现还允许我们使用 cm2inch((12.8, 9.6))
,虽然个人不太喜欢,但有些人可能会使用。
尽管目前没有本地化解决此问题的方法,但我在此处找到了一个讨论 here。
我认为这里提供的解决方案也很有帮助。所以,在您的情况下,
cm = 1/2.54 # centimeters in inches
plt.figure(figsize=(12.8*cm, 9.6*cm))
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)
plt.subplots
等。def figure(**kwargs):
"""
create a figure with figsize in cm
"""
cm = 1/2.56 # convert cm to inch
kwargs = dict(**kwargs)
figsize = kwargs.pop("figsize", (15*cm, 10*cm))
figsize = (figsize[0]*cm, figsize[1]*cm)
fig = plt.figure(figsize=figsize, **kwargs)
return fig
figure(figsize=(12.8,9.6))
返回 图形(500x375)
def cm2inch(*tupl): return (i/2.54 for i in tupl[0]) if type(tupl[0]) is tuple else (i/2.54 for i in tupl)
- Ezbob