如何更改图像的大小以使其适合打印?
例如,我想用A4纸,横向尺寸为11.7英寸×8.27英寸。
答案 0 :(得分:130)
您还可以通过在seaborn rc
方法中使用键'figure.figsize'
将字典传递到set
参数来设置数字大小:
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
其他替代方法可能是使用figure.figsize
的{{1}}来设置数字大小,如下所示:
rcParams
更多详情可在matplotlib documentation
中找到答案 1 :(得分:123)
您需要提前创建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)
答案 2 :(得分:80)
您可以将上下文设置为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')
答案 3 :(得分:30)
请注意,如果您尝试通过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和Plotting with seaborn using the matplotlib object-oriented interface。
答案 4 :(得分:13)
首先导入matplotlib并使用它来设置图形的大小
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,8))
ax = sns.barplot(x="Word", y="Frequency", data=boxdata)
答案 5 :(得分:10)
这可以使用:
plt.figure(figsize=(15,8))
sns.kdeplot(data,shade=True)
答案 6 :(得分:7)
对于我的情节(sns因子图),建议的答案无法正常工作。
我用
plt.gcf().set_size_inches(11.7, 8.27)
就在与seaborn一起的情节之后(因此无需将斧头传递给seaborn或更改rc设置)。
答案 7 :(得分:5)
Paul H和J. Li给出的最高答案并不适用于所有类型的海洋人物。对于from itertools import groupby
from operator import itemgetter
list_of_num = [1,3,4,5,6,10,11,13,15,17,18]
for _, value in groupby(enumerate(list_of_num), lambda i_x: i_x[0] - i_x[1]):
collapsed_nums = map(itemgetter(1), value)
类型(例如FacetGrid
),请使用sns.lmplot()
和size
参数。
aspect
同时更改高度和宽度,并保持宽高比。
Size
仅更改宽度,保持高度不变。
始终可以通过使用这两个参数来获得所需的大小。
答案 8 :(得分:5)
这也将起作用。
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
答案 9 :(得分:2)
除了关于“图形级”方法的 elz 答案(返回多图网格对象)之外,还可以使用以下方法显式设置图形的高度和宽度(即不使用纵横比)方法:
<form method="POST" name="hiddenform" action="ms-appx-web://Microsoft.AAD.BrokerPlugin/d3590ed6-52b3-4102-aeff-aad2292ab01c"><input type="hidden" name="error" value="invalid_resource" />
<input type="hidden" name="error_description" value="AADSTS500011: The resource principal named https://dev-o365-vk.xxxxxxxx.com/ was not found in the tenant named 1742xxd3-07xx-xxxx-xxxx-7f5d28986xx3.
This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant.
Trace ID: 67faxx5-bbf7-4dd4-8d52-xxxxx
Correlation ID: 13xxe9f1-350b-40fd-bd6b-xxxxx
Timestamp: 2019-07-09 12:06:04Z" />
答案 10 :(得分:1)
# Sets the figure size temporarily but has to be set again the next plot
plt.figure(figsize=(18,18))
sns.barplot(x=housing.ocean_proximity, y=housing.median_house_value)
plt.show()
答案 11 :(得分:0)
一些尝试过的方法:
import seaborn as sns
import matplotlib.pyplot as plt
ax, fig = plt.subplots(figsize=[15,7])
sns.boxplot(x="feature1", y="feature2",data=df) # where df would be your dataframe
或
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=[15,7])
sns.boxplot(x="feature1", y="feature2",data=df) # where df would be your dataframe