আমি কীভাবে সামুদ্রিক জলের জন্য চিত্রের আকার পরিবর্তন করব?


223

আমি কীভাবে আমার চিত্রটির আকার পরিবর্তন করব যাতে এটি মুদ্রণের জন্য উপযুক্ত?

উদাহরণস্বরূপ, আমি A4 কাগজটি ব্যবহার করতে চাই, যার মাত্রা ১১.7 ইঞ্চি দ্বারা ল্যান্ডস্কেপ অভিযোজনে .2.২7 ইঞ্চি।

উত্তর:


197

চিত্রটি কত বড় তা উল্লেখ করে আপনাকে সময়ের আগে ম্যাটপ্ল্লিটব চিত্র এবং অক্ষগুলি তৈরি করতে হবে:

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)

7
এই সমাধানটি নিম্নলিখিত কোডটির সাথে কাজ করে বলে মনে হচ্ছে না (বিভিন্ন ধরণের প্লট)। কোন ধারনা? আমি ধরে নিলাম "মাইলিব" হ'ল একটি লাইব্রেরি যেখানে আপনি আপনার ডেটা সংরক্ষণ করেছেন এবং এই কোডে এটির প্রয়োজন নেই: `ডুমুর, কুড়ালি = পিপল্লট.সুবপ্লটস (ডুমুরের আকার = (12,6)); sns.jointplot (মেমরিপ্রাইস ['দাম'], মেমোরিপ্রিস ['মেমরি'])
TM

3
এই উত্তরটি @ টিএমডাব্লুপি-র ক্ষেত্রে কাজ করে না কারণ জয়েন্টপ্লট একটি চিত্র স্তরের পদ্ধতি। নীচে উত্তর দেখুন।
এলজ

5
এই উত্তরটি সেই প্লটের ধরণের সাথে কাজ করে না যা কুড়ালটিকে ইনপুট হিসাবে গ্রহণ করে না, উদাহরণস্বরূপsns.lmplot()
ক্রিস

2
সমুদ্রজাত মধ্যে প্লটের আকার ব্যবহার করে নির্ধারণ করা উচিত heightএবং aspectপরামিতি এখানে ব্যাখ্যা stackoverflow.com/a/51602446/2412831
LeandroOrdonez

@ লিন্ড্রো আরডোনেজ যা অক্ষ-স্তরের কার্যক্রমে সত্যিই প্রযোজ্য নয়।
পল এইচ

234

আপনি সিউর্ন পদ্ধতিতে rcকী দিয়ে প্যারামিটারে অভিধান পাস করে চিত্রের আকারও সেট করতে পারেন :'figure.figsize'set

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

ম্যাটপ্ল্লোলিব ডকুমেন্টেশনে আরও বিশদ পাওয়া যাবে


5
অন্যান্য সমাধানগুলির বিপরীতে, এই সমাধানটি প্লটটি সংজ্ঞায়িত করার কোনও নির্দিষ্ট উপায় অনুমান করে না। ধন্যবাদ।
LoMaPh

7
মনে রাখবেন যে আপনি যখন sns.set () কল করেন, তখন এটি ম্যাটপ্ল্লোলিব ডিফল্টের পরিবর্তে আপনার চিত্রের শৈলীগুলি এসএনএস ডিফল্টকে ডিফল্ট করে দেয়, উদাহরণস্বরূপ আপনার চিত্রগুলি হঠাৎ সাদা গ্রিডযুক্ত ধূসর পটভূমিতে থাকবে - এখানে দেখুন: seaborn.pydata.org/ টিউটোরিয়াল / নান্দনিকতাhtml । এছাড়াও, এটি আমার প্লটের আকারের উপর কোনও প্রভাব ফেলেনি (একটি sns.pairplot)।
মেলিসা

না আমার sns.boxplot হিসাবে
গর্ডন

@ মেলিসা এর জন্য ধন্যবাদ এটি আমাকে বুঝতে পেরেছিল যে আমাকে .set()আগে কল করতে হবে.set_style()
জোরিজনসমিট

89

আপনি প্রসঙ্গটি সেট করতে পারেন 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
এই উত্তরটি সেই প্লটের ধরণের সাথে কাজ করে না যা কুড়ালটিকে ইনপুট হিসাবে গ্রহণ করে না, উদাহরণস্বরূপsns.lmplot()
ক্রিস

ক্রিসের উত্তরের সম্প্রসারণ করতে কিছু সমুদ্র সৈকত প্লট একাধিক অক্ষের সাথে সংমিশ্রিত চিত্র তৈরি করে, তাই তারা যুক্তি হিসাবে একটি অক্ষকে নিতে পারে না।
মারমাদুকে

73

মনে রাখবেন যদি আপনি সমুদ্রজাত একটি "ব্যক্তিত্ব স্তর" পদ্ধতি পাস করার চেষ্টা করছেন (যেমন 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 অবজেক্ট ওরিয়েন্টেড ইন্টারফেস ব্যবহার করে ষড়যন্ত্র সমুদ্রজাত সঙ্গে সত্য যে চিত্রে স্তর পদ্ধতি আনুগত্য করবেন না এবং অক্ষ বিশেষ উল্লেখ না আরও বিশদের জন্য।


11
এটি এখন পর্যন্ত একমাত্র উত্তর যা সঠিকভাবে sns প্লটগুলির সাথে ডিল করে যা কুড়ালটিকে আর্গুমেন্ট হিসাবে গ্রহণ করে না।
মেলিসা

নোট করুন যে উচ্চতা এবং দিকটি একটি একক "দিক", অর্থাৎ সাবপ্লোটের মাত্রা নিয়ন্ত্রণ করে। সুতরাং এটি সরাসরি পুরো চিত্রের মাত্রা সামঞ্জস্য করে না।
বার্নি

43

প্রথমে 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)

20

এটি ব্যবহার করে করা যেতে পারে:

plt.figure(figsize=(15,8))
sns.kdeplot(data,shade=True)


16

আমার প্লটের জন্য (একটি এসএনএস ফ্যাক্টরপ্লট) প্রস্তাবিত উত্তরটি ঠিক কাজ করে না।

এইভাবে আমি ব্যবহার করি

plt.gcf().set_size_inches(11.7, 8.27)

ঠিক সমুদ্র সৈকতের সাথে প্লটের পরে (সুতরাং সমুদ্রের দিকে কোনও কুড়াল পাস করার বা আরসি সেটিংস পরিবর্তন করার দরকার নেই)।


1
এটিই একমাত্র সমাধান যা আমার জন্য ফেসট্রিড নিয়ে কাজ করে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")
নিকোলাস 78

একই অবস্থা. এটি দেখে মনে হচ্ছে sns.FacetGridএকটি হিসাব মান (দ্বারা সেট অনুযায়ী একটি চিত্র আকার সেট হবে heightএবং aspect) এবং চিত্রে আকার সরাসরি পর সমুদ্রজাত চক্রান্ত কাজ করবে পরিবর্তন। চিত্রের আকার পরিবর্তন করার পরে প্লটের অন্যান্য সূক্ষ্ম সুরকরণ ঘটতে পারে
Yunting Zhao

16

মাল্টি প্লট গ্রিড অবজেক্টগুলি ফিরিয়ে আনা "ফিগার লেভেল" পদ্ধতি সম্পর্কিত এলজের জবাব ছাড়াও নীচের পদ্ধতির সাহায্যে চিত্রের উচ্চতা এবং প্রস্থকে স্পষ্টভাবে (যা দিক অনুপাত ব্যবহার না করে) সেট করা সম্ভব:

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গ্রিড বস্তুর জন্য ভাল কাজ। >>> সমুদ্র সৈকত আমদানি করুন >>> পাইপ্লট হিসাবে matplotlib.pyplot আমদানি করুন >>> টিপস = seaborn.load_dataset ("টিপস") >>> g = সমুদ্রসংশ্লিষ্ট.ফ্রেডগ্রিড (টিপস, কল = "সময়", সারি = "ধূমপায়ী") >>> g = g.map (pyplot.hist, "মোট_বিল") >>> g.fig.set_figwidth (10) >>> g.fig.set_figheight (10)
পল রাউজিউক্স

1
সম্ভবত এপিআই পরিবর্তন হয়েছে তবে আমার জন্য এটি g.fig.set_figwidth এর পরিবর্তে g.figure.set_figwidth ছিল। আমি matplotlib সংস্করণটি 3.1.0 এবং সামুদ্রিক 0.9.0
NateW

6

পল এইচ এবং জে লি দ্বারা শীর্ষ উত্তরগুলি সমস্ত ধরণের সমুদ্র সৈকতের চিত্রগুলির জন্য কাজ করে না। জন্য FacetGridপ্রকার (উদাহরণস্বরূপ sns.lmplot()), ব্যবহার sizeএবং aspectপ্যারামিটার।

Size দিক অনুপাত বজায় রেখে উচ্চতা এবং প্রস্থ উভয়ই পরিবর্তন করে।

Aspect উচ্চতা অবিচ্ছিন্ন রেখে শুধুমাত্র প্রস্থ পরিবর্তন করে।

আপনি এই দুটি প্যারামিটারের সাথে খেলতে সর্বদা আপনার পছন্দসই আকারটি পেতে পারেন।

ক্রেডিট: https://stackoverflow.com/a/28765059/3901029

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.