Resmimin boyutunu yazdırmaya uygun olacak şekilde nasıl değiştirebilirim?
Örneğin, boyutları yatay yönde 11,7 inç x 8,27 inç olan A4 kağıda kullanmak istiyorum.
Resmimin boyutunu yazdırmaya uygun olacak şekilde nasıl değiştirebilirim?
Örneğin, boyutları yatay yönde 11,7 inç x 8,27 inç olan A4 kağıda kullanmak istiyorum.
Yanıtlar:
Şeklin ne kadar büyük olduğunu belirterek, önceden matplotlib Figure ve Axes nesnelerini oluşturmanız gerekir:
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
ve aspect
parametreleri kullanılarak ayarlanmalıdır. Stackoverflow.com/a/51602446/2412831
Şekil boyutunu , deniz dibi yönteminde rc
anahtar ile parametreye sözlük ileterek de ayarlayabilirsiniz :'figure.figsize'
set
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
Diğer bir alternatif kullanmak olabilir figure.figsize
ve rcParams
aşağıdaki gibi resim Şekil boyutu:
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
Daha fazla bilgi matplotlib belgelerinde bulunabilir
.set()
önce aramak zorunda fark.set_style()
Sen olmak bağlamı ayarlayabilirsiniz poster
veya manuel olarak ayarlanır 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()
Eğer Seaborn bir "figür düzeyi" yöntemine geçmek çalışıyorsanız (örneğin unutmayın lmplot
, catplot
/ factorplot
, jointplot
) sizin ve kullanan argümanlar içinde bu belirtmelidir edebilir height
ve aspect
.
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
Bkz. Https://github.com/mwaskom/seaborn/issues/488 ve Şekil düzeyi yöntemlerinin eksen özelliklerine uymadığı konusunda daha fazla ayrıntı için matplotlib nesne yönelimli arabirimi kullanarak deniz dibinin çizilmesi .
Bu da işe yarayacaktır.
from matplotlib import pyplot as plt
import seaborn as sns
plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
Benim komplo (sns factorplot) için önerilen cevap işe yaramadı.
Böylece kullanıyorum
plt.gcf().set_size_inches(11.7, 8.27)
Seaborn'lu arsadan hemen sonra (bu yüzden deniz baltasına balta geçirmeye veya rc ayarlarını değiştirmeye gerek yok).
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
göre ( height
ve ile ayarlanan aspect
) hesaplanan bir değere göre bir rakam boyutu belirleyecek ve deniz boyutundaki çizimden hemen sonra rakam boyutunu değiştirmek işe yarayacak. Ve figürün boyutunu değiştirdikten sonra arsanın diğer ince ayarları gerçekleşebilir
Çoklu çizim ızgara nesnelerini döndüren "şekil düzeyi" yöntemlerine ilişkin elz yanıtına ek olarak , aşağıdaki yaklaşımı kullanarak şekil yüksekliğini ve genişliğini açıkça (en boy oranını kullanmadan) ayarlamak mümkündür:
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
ve set_figheight
ızgara nesneleri için iyi çalışır. >>> denizdoğusunu içe aktar >>> pyplot olarak matplotlib.pyplot dosyasını içe aktar >>> ipuçları = seaborn.load_dataset ("ipuçları") >>> g = seaborn.FacetGrid (ipuçları, sütun = "zaman", satır = "sigara içen") >>> g = g.map (pyplot.hist, "total_bill") >>> g.fig.set_figwidth (10) >>> g.fig.set_figheight (10)
Paul H ve J. Li'nin en iyi cevapları her tür deniz dibi figürü için işe yaramaz. İçin FacetGrid
(örneğin tip sns.lmplot()
), kullanımı size
ve aspect
parametre.
Size
en boy oranını koruyarak hem yüksekliği hem de genişliği değiştirir.
Aspect
yüksekliği sabit tutarak yalnızca genişliği değiştirir.
Bu iki parametre ile oynayarak istediğiniz boyutu her zaman elde edebilirsiniz.
Kredi bilgileri: https://stackoverflow.com/a/28765059/3901029