Làm cách nào để thay đổi kích thước hình ảnh của tôi để nó phù hợp để in?
Ví dụ: tôi muốn sử dụng giấy A4, có kích thước 11,7 inch x 8,27 inch theo hướng ngang.
Làm cách nào để thay đổi kích thước hình ảnh của tôi để nó phù hợp để in?
Ví dụ: tôi muốn sử dụng giấy A4, có kích thước 11,7 inch x 8,27 inch theo hướng ngang.
Câu trả lời:
Bạn cần tạo các đối tượng Hình và Trục của matplotlib trước thời hạn, chỉ định hình lớn như thế nào:
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()
height
và aspect
các tham số như được giải thích ở đây stackoverflow.com/a/51602446/2412831
Bạn cũng có thể đặt kích thước hình bằng cách chuyển từ điển sang rc
tham số bằng khóa 'figure.figsize'
trong set
phương thức seaborn :
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Thay thế khác có thể sử dụng figure.figsize
các rcParams
kích thước hình thiết lập như sau:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Thông tin chi tiết có thể được tìm thấy trong tài liệu matplotlib
.set()
trước.set_style()
Bạn có thể đặt bối cảnh thành poster
hoặc đặt thủ công 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()
Lưu ý rằng nếu bạn đang cố gắng để vượt qua một phương pháp "cấp con số" trong sanh ở biển (ví dụ lmplot
, catplot
/ factorplot
, jointplot
), bạn có thể và nên xác định này trong đối số sử dụng height
và aspect
.
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
Xem https://github.com/mwaskom/seaborn/issues/488 và Vẽ sơ đồ với seaborn bằng giao diện hướng đối tượng matplotlib để biết thêm chi tiết về thực tế rằng các phương pháp mức hình không tuân theo thông số kỹ thuật trục.
Điều này cũng sẽ làm việc.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
Đối với âm mưu của tôi (một nhân tố sns), câu trả lời được đề xuất không hoạt động tốt.
Vì vậy tôi sử dụng
plt.gcf().set_size_inches(11.7, 8.27)
Ngay sau cốt truyện với seaborn (vì vậy không cần phải chuyển rìu sang seaborn hoặc thay đổi cài đặt 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
sẽ đặt kích thước hình theo giá trị được tính (được đặt bởi height
và aspect
) và thay đổi kích thước hình trực tiếp sau khi vẽ sơ đồ đáy biển sẽ hoạt động. Và điều chỉnh tốt khác của cốt truyện có thể xảy ra sau khi thay đổi kích thước hình
Ngoài câu trả lời của elz về các phương thức "mức hình" trả về các đối tượng lưới nhiều ô, có thể đặt rõ ràng chiều cao và chiều rộng của hình (không sử dụng tỷ lệ khung hình) bằng cách sử dụng phương pháp sau:
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
và set_figheight
làm việc tốt cho các đối tượng lưới. >>> nhập seaborn >>> nhập matplotlib.pyplot dưới dạng pyplot >>> tips = seaborn.load_dataset ("mẹo") >>> g = seaborn.FacetGrid (mẹo, col = "time", row = "smoker") >>> g = g.map (pyplot.hist, "Total_bill") >>> g.fig.set_figference (10) >>> g.fig.set_figheight (10)
Các câu trả lời hàng đầu của Paul H và J. Li không hoạt động cho tất cả các loại hình người đi biển. Đối với FacetGrid
loại (ví dụ sns.lmplot()
), sử dụng tham số size
và aspect
.
Size
thay đổi cả chiều cao và chiều rộng, duy trì tỷ lệ khung hình.
Aspect
chỉ thay đổi chiều rộng, giữ chiều cao không đổi.
Bạn luôn có thể có được kích thước mong muốn của mình bằng cách chơi với hai tham số này.