如何更改图像尺寸以适合打印?
例如,我想使用A4纸,其横向尺寸为11.7英寸乘8.27英寸。
如何更改图像尺寸以适合打印?
例如,我想使用A4纸,其横向尺寸为11.7英寸乘8.27英寸。
Answers:
您需要提前创建matplotlib图形和轴对象,并指定图形的大小:
from matplotlib import pyplot
import seaborn
import mylib
a4_dims = (11.7, 8.27)
df = mylib.load_data()
fig, ax = pyplot.subplots(figsize=a4_dims)
seaborn.violinplot(ax=ax, data=df, **violin_options)
sns.lmplot()
您还可以通过rc
使用'figure.figsize'
seaborn set
方法中的key 将字典传递给参数来设置图形大小:
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
其他替代可以是使用figure.figsize
的rcParams
对集合的数字大小如下:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
可以在matplotlib文档中找到更多详细信息
.set()
前.set_style()
您可以将上下文设置为poster
或手动设置fig_size
。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
np.random.seed(0)
n, p = 40, 8
d = np.random.normal(0, 2, (n, p))
d += np.log(np.arange(1, p + 1)) * -5 + 10
# plot
sns.set_style('ticks')
fig, ax = plt.subplots()
# the size of A4 paper
fig.set_size_inches(11.7, 8.27)
sns.violinplot(data=d, inner="points", ax=ax)
sns.despine()
fig.savefig('example.png')
sns.lmplot()
请注意,如果你正在试图通过一个“数字级别”的方法在seaborn(例如lmplot
,catplot
/ factorplot
,jointplot
),你可以而且应该在参数中指定使用这个height
和aspect
。
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
请参阅https://github.com/mwaskom/seaborn/issues/488和使用matplotlib面向对象的界面使用seaborn进行绘图,以了解有关图形级方法不遵守轴规格的事实的更多详细信息。
这也将起作用。
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
对于我的情节(sns因子图),建议的答案不起作用。
因此我用
plt.gcf().set_size_inches(11.7, 8.27)
紧随seaborn的情节之后(因此无需将斧头传递给seaborn或更改rc设置)。
python g = sns.FacetGrid(df.set_index('category'), col="id") pyplot.gcf().set_size_inches(11.7, 8.27) g.map(lambda data, color: data.plot.barh(color=color), "count")
sns.FacetGrid
可以根据计算值(由height
和设置aspect
)设置图形大小,并在进行海底绘图后立即更改图形大小。更改图形大小后,还可以对图进行其他精细调整
除了关于返回多图网格对象的“图形级别”方法的elz答案之外,还可以使用以下方法显式设置图形的高度和宽度(即不使用宽高比):
import seaborn as sns
g = sns.catplot(data=df, x='xvar', y='yvar', hue='hue_bar')
g.fig.set_figwidth(8.27)
g.fig.set_figheight(11.7)
set_figwidth
并set_figheight
适用于网格对象。>>>导入seaborn >>>导入matplotlib.pyplot作为pyplot >>>技巧= seaborn.load_dataset(“ tips”)>>> g = seaborn.FacetGrid(tips,col =“ time”,row =“ smoker”) >>> g = g.map(pyplot.hist,“ total_bill”)>>> g.fig.set_figwidth(10)>>> g.fig.set_figheight(10)
保罗·H(Paul H)和李·李(J. Li)给出的头等答案并非适用于所有类型的海洋人物。对于FacetGrid
类型(例如sns.lmplot()
),请使用size
和aspect
参数。
Size
更改高度和宽度,并保持宽高比。
Aspect
只改变宽度,保持高度不变。
始终可以通过使用这两个参数来获得所需的大小。