পাইথন ব্যবহার করে কীভাবে প্লট.শো () উইন্ডোটি সর্বাধিক করা যায়


95

কেবল কৌতূহলের জন্য আমি নীচের কোডটিতে এটি কীভাবে করব তা জানতে চাই। আমি একটি উত্তর খুঁজছি কিন্তু অকেজো।

import numpy as np
import matplotlib.pyplot as plt
data=np.random.exponential(scale=180, size=10000)
print ('el valor medio de la distribucion exponencial es: ')
print np.average(data)
plt.hist(data,bins=len(data)**0.5,normed=True, cumulative=True, facecolor='red', label='datos tamano paqutes acumulativa', alpha=0.5)
plt.legend()
plt.xlabel('algo')
plt.ylabel('algo')
plt.grid()
plt.show()

4
স্পোলার, উইন্ডোজে কাজ করা: plt.get_current_fig_manager().window.state('zoomed')তারপরে plt.show()
বাসজ

4
আমার জন্য কাজ করে না
জোহান

উত্তর:


37

আমি সাধারণত ব্যবহার করি

mng = plt.get_current_fig_manager()
mng.frame.Maximize(True)

কল করার আগে plt.show()এবং আমি একটি সর্বাধিক উইন্ডো পেয়েছি। এটি কেবল 'wx' ব্যাকএন্ডের জন্য কাজ করে for

সম্পাদনা:

Qt4Ag ব্যাকেন্ডের জন্য, কিউরেন্ডার উত্তর দেখুন


66
এটি ব্যবহার করে, আমি mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'Matplotlib 1.2.0
জুনক্সক্স

4
এটি ব্যাকএন্ড ডাব্লুএক্সের সাথে কাজ করে, আমি সেই অনুযায়ী পোস্টটি আপডেট করেছি। সম্ভবত আপনি যে ব্যাঙ্কেন্ড ব্যবহার করছেন তা এই বৈশিষ্ট্যটিকে সমর্থন করে না। আপনার কাছে কী ম্যাটপ্লটলিব ব্যাকএন্ডকে 'ডাব্লু এক্স' তে পরিবর্তন করার বিকল্প রয়েছে?
gg349

11
Mac এ ত্রুটি: mng.frame.Maximize (সত্য) AttributeError: 'FigureManagerMac' অবজেক্ট কোন অ্যাট্রিবিউট 'ফ্রেম' হয়েছে
user391339

7
MacOSXব্যাকএন্ডে এটি করার কোনও জ্ঞাত সমাধান রয়েছে কি ? দেখে FigureManagerMacমনে হয় এর বৈশিষ্ট্যও windowনেই বা নেই frame
ম্যাকলাউরেন্স

4
উইন্ডোজে আমার একই সমস্যা রয়েছে
রোলরোল

169

আমি উইন্ডোজ (ডাব্লুআইএন 7) তে পাইথন ২. 2..৫ এবং ম্যাটপ্ল্লিটিব ১.৩.১ চালাচ্ছি।

নিম্নলিখিত লাইনগুলি ব্যবহার করে আমি চিত্র উইন্ডোজ টিকেজি, কিউটি 4 অগ, এবং ডাব্লুএক্সএজি জন্য সর্বোচ্চ করতে সক্ষম হয়েছি:

from matplotlib import pyplot as plt

### for 'TkAgg' backend
plt.figure(1)
plt.switch_backend('TkAgg') #TkAgg (instead Qt4Agg)
print '#1 Backend:',plt.get_backend()
plt.plot([1,2,6,4])
mng = plt.get_current_fig_manager()
### works on Ubuntu??? >> did NOT working on windows
# mng.resize(*mng.window.maxsize())
mng.window.state('zoomed') #works fine on Windows!
plt.show() #close the figure to run the next section

### for 'wxAgg' backend
plt.figure(2)
plt.switch_backend('wxAgg')
print '#2 Backend:',plt.get_backend()
plt.plot([1,2,6,4])
mng = plt.get_current_fig_manager()
mng.frame.Maximize(True)
plt.show() #close the figure to run the next section

### for 'Qt4Agg' backend
plt.figure(3)
plt.switch_backend('QT4Agg') #default on my system
print '#3 Backend:',plt.get_backend()
plt.plot([1,2,6,4])
figManager = plt.get_current_fig_manager()
figManager.window.showMaximized()
plt.show()

আশা করি পূর্ববর্তী উত্তরগুলির সংক্ষিপ্তসার (এবং কিছু সংযোজন) একটি কার্যকারী উদাহরণে মিলিত হয়েছে (কমপক্ষে উইন্ডোজের জন্য) সহায়তা করে। চিয়ার্স


7
### উবুন্টুতে কাজ করে ??? >> উইন্ডোজ mng.resize (* mng.window.maxsize ()) # আমার জন্য লিনাক্সের জন্য নিখুঁত কাজ করে কাজ করে নি
ড্যানিয়েল

4
@ ড্যানিয়েল, আপনার সমাধান আমার জন্য উবুন্টু তে টাকাগুলিতে কাজ করে। ধন্যবাদ! তবে পার্স করতে আমার কিছুটা সময় লেগেছিল;) "এমএনজি.রেজাইজ ..." এর আগে সমস্ত কিছু থেকে মুক্তি পেতে পারে।
বেনবি

4
আপনি কোন ব্যাকএন্ড ব্যবহার করছেন তা যাচাই করার কোনও সহজ উপায় আছে? কিন্ডা এখন পরীক্ষার শেষ ত্রুটি ব্যবহার করেছে used
রাটার হাফস্টে

4
দুর্ভাগ্যক্রমে, আমি Qt5Agg দিয়ে আপনার কোডটি চেষ্টা করেছিলাম, যখন আমি টাইপ করি figManager.window.showMaximized(), সর্বাধিক পূর্ণস্ক্রিন উইন্ডোটি সবেমাত্র আপ আপ হয়। পরবর্তী লাইন: plt.show()কেবলমাত্র অন্য একটি উইন্ডো দেখান যা একটি সাধারণ আকারের উইন্ডোতে ডেটা প্লট করে।
স্টিফুলিশ

4
টাকা ভিত্তিক সমাধানটি আমার পক্ষে কাজ করে না: _tkinter.TclError: bad argument "zoomed": must be normal, iconic, or withdrawn(উবুন্টু 16.04)।
bluenote10

77

কিউটি ব্যাকএন্ড (চিত্রম্যানেজারকিটি) সহ সঠিক কমান্ডটি হ'ল:

figManager = plt.get_current_fig_manager()
figManager.window.showMaximized()

4
এটি এখনও plt.show()পরে প্রয়োজন । দুর্দান্ত উত্তর যদিও, উইন্ডোতে কাজ করে!
lucidbrot

'_tkinter.tkapp' অবজেক্টে দ্বি বৈশিষ্ট্য রয়েছে 'শোম্যাক্সিমাইজড'। সর্বদা আরও নিশ্চিত যে পাইথন একটি ভাষার চেয়ে রসিকতা
HAL9000

4
@ HAL9000 প্রথমত, এটি Qt4 এর জন্য, টাকার জন্য নয়। দ্বিতীয়ত, আপনি কোনও বাহ্যিক প্যাকেজ ডিজাইনের ইস্যুটির জন্য কোনও ভাষা দোষ দিচ্ছেন। আপনার যে কোনও ভাষায় এই জাতীয় সমস্যা থাকতে পারে।
জেফ লারম্যান

আমি AttributeError: '_tkinter.tkapp' object has no attribute 'showMaximized'উইন্ডোজ পেয়েছি ।
বাসজ

45

এটি উইন্ডোটি আমার জন্য উবুন্টু ১২.০৪ এর অধীনে পুরো অ্যাক্সেস ব্যাকএন্ড সহ পুরো স্ক্রিনটি তুলবে:

    mng = plt.get_current_fig_manager()
    mng.resize(*mng.window.maxsize())

6
নোট করুন যে এটি একাধিক মনিটরের সেটআপে অদ্ভুত প্রভাব ফেলে। উইন্ডোটি সর্বাধিক না করে পরিবর্তে সমস্ত মনিটর ব্যবহার করবে।
ব্যবহারকারী1202136

4
এটি একটি সর্বাধিক উইন্ডো তৈরি করবে না (যা স্ক্রিনের প্রান্তগুলিতে স্ন্যাপ করা উচিত), তবে একটি সর্বোচ্চ আকারের আকারের সাথে একটি সর্বাধিকবিহীন উইন্ডো তৈরি করবে।
হ্যালো গুডবাই

এটি উবুন্টু 14.04-এ খুব সফলভাবে উইন্ডোটি সর্বাধিকীকরণ করে, উপরের বারটিটি আমরা সকলেই জানি।
আইরিন

উবুন্টু 16.04 এবং লিনাক্স পুদিনায় কাজ করে। পাইথন 2.7 পরীক্ষা করা হয়েছে
ব্যবহারকারী 1941407

@ ব্যবহারকারী1202136 3-মনিটরের সেটআপে আমার জন্য ভাল কাজ করেছে।
মাইকেল লিটভিন

40

আমার জন্য উপরের কিছুই কাজ করেনি। আমি উবুন্টু ১৪.০৪ এ ট্যাকা ব্যাকএন্ড ব্যবহার করি যা ম্যাটপ্ল্লিটিব ১.৩.১ রয়েছে।

নিম্নলিখিত কোডটি একটি পূর্ণস্ক্রিন প্লট উইন্ডো তৈরি করে যা সর্বাধিক করার মতো নয় তবে এটি আমার উদ্দেশ্যটি সুন্দরভাবে পরিবেশন করে:

from matplotlib import pyplot as plt
mng = plt.get_current_fig_manager()
mng.full_screen_toggle()
plt.show()

4
এটি আমার জন্য কাজ করা সমাধানও ছিল (যদিও এটি পুরো পর্দায় যায়, উইন্ডো সর্বাধিক নয়)। রেডহাট এন্টারপ্রাইজ লিনাক্স 6, পাইথন 2.7.10, ম্যাটপ্ল্লোলিব 1.4.3 এ চলছে।
ক্রসএন্ট্রপি

4
উইন্ডোজ 10 x64, অজগর 3.5 এ ভিজ্যুয়াল স্টুডিও 2015-এর মধ্যে আমার জন্য কাজ করেছিলেন, তবে চিত্রটি বন্ধ করতে আমি উইন্ডো বর্ডারটি অ্যাক্সেস করতে পারিনি, কারণ এটি শীর্ষ স্ক্রিন পিক্সেলের উপরে ছিল।
ডেভিড কচিয়া

4
আমার জন্য, এটি কোনও সর্বাধিক উইন্ডো তৈরি করে না, তবে একটি পূর্ণ স্ক্রিন। আমি সাধারণ উইন্ডোজগুলির মতো কোনও ন্যূনতম, সর্বোচ্চ / পুনরুদ্ধার এবং বোতামগুলি বন্ধ পাইনি এবং টাস্কবারের উইন্ডোটি বন্ধ করতে সক্ষম হতে আমাকে ডান-ক্লিক করতে হয়েছিল।
হ্যালো গুডবাই

4
প্রতিটি উইন্ডোতে থাকা বোতামগুলি না দেখিয়ে এটি পূর্ণ পর্দায় যায়। উবুন্টুতে চেষ্টা করা হয়েছে 14.04।
আইরিন


37

এটি কাজ করা উচিত ( কমপক্ষে টাকা সহ):

wm = plt.get_current_fig_manager()
wm.window.state('zoomed')

(উপরের থেকে গৃহীত হয়েছে এবং টিনকিটার ব্যবহার করে, উইন্ডোটি দৃশ্যমানভাবে জুম না করে ব্যবহারযোগ্য পর্দার আকার পাওয়ার কোনও উপায় আছে কি? )


4
হ্যাঁ! এটি আমার পক্ষে কাজ করেছিল; এটি একটি সর্বাধিক উইন্ডো তৈরি করে যা স্ক্রিনের প্রান্তগুলিতে স্ন্যাপ করে এবং নূন্যতম, সর্বাধিক পুনঃস্থাপন এবং ডাউন বোতামগুলি যেমনটি হওয়া উচিত তেমন করে।
হ্যালো গুডবাই

4
তবে, আপনি বলতে চাচ্ছেন যে এটি কাজ করে TkAgg, তাই না TkApp?
হ্যালো গুডবাই

ভাল ধরা (সম্ভবত একটি টাইপো)! টকএজিজি টাকার ব্যাকএন্ড হয়।
দিনভ্লাদ

4
ম্যাটপ্ল্লোলিব 2 / পাইথন 3 এর জন্য এটি কেবল পরীক্ষা করা হয়েছে। উইন্ডোজ অধীনে কাজ!
not_a_bot_no_really_82353

7

এটি হ্যাকির মতো এবং সম্ভবত পোর্টেবল নয়, কেবলমাত্র যদি আপনি দ্রুত এবং ময়লা খুঁজছেন তবে এটি ব্যবহার করুন। আমি যদি চিত্রটি কেবল স্ক্রিনের চেয়ে অনেক বড় করে সেট করি তবে এটি পুরো স্ক্রিনে লাগে।

fig = figure(figsize=(80, 60))

প্রকৃতপক্ষে, Qt4Agg সহ উবুন্টু 16.04-এ, এটি যদি পর্দার চেয়ে বড় হয় তবে এটি উইন্ডোটি সর্বাধিক করে তোলে (পূর্ণ-স্ক্রিন নয়)। (আপনার যদি দু'জন মনিটর থাকে তবে এটি কেবল তাদের একটিতে এটি সর্বাধিক বাড়িয়ে তোলে)।


আমার জন্য কাজ কর! আমি পর্দার আকার পেতে চেষ্টা করছি।
স্টিফুলিশ


6

আমি mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'ভাল পেতে ।

তারপরে আমি বৈশিষ্ট্যগুলি mngদেখেছি এবং এটি আমি পেয়েছি:

mng.window.showMaximized()

এটা আমার জন্য কাজ করেছে।

সুতরাং যাদের একই সমস্যা রয়েছে তাদের জন্য আপনি এটি ব্যবহার করে দেখতে পারেন।

যাইহোক, আমার ম্যাটপ্ল্লিটিব সংস্করণটি 1.3.1।


ধন্যবাদ! এই সমাধানটি আমার পক্ষে ভাল কাজ করেছে। রেডহাট এন্টারপ্রাইজ লিনাক্স 6, পাইথন 2.7.10, ম্যাটপ্ল্লোলিব 1.4.3 এ চলছে।
ক্রসএন্ট্রপি

আমি জানি এটি একটি পূর্ণস্ক্রিন উইন্ডোটিকে পপআপ করবে, তবে আমি টাইপ করার সময় আমার প্লটগুলি একটি পৃথক উইন্ডোতে আসবে plt.show()। এই পূর্ণস্ক্রিন উইন্ডোতে নেই, কোনও পরামর্শ?
স্টিফুলিশ

এটি ডেবিয়ানে অজগর 3.6 এবং কিউটি ব্যাকএন্ডের সাথেও কাজ করে।
pbalaga

এটি অজগর 3.7 সহ উইন্ডোজ 10 64 বাইটে চলবে না
জর্জ এসপি

4

এক সমাধান যা বিজয় 10 এ ত্রুটিহীনভাবে কাজ করেছে।

import matplotlib.pyplot as plt

plt.plot(x_data, y_data)

mng = plt.get_current_fig_manager()
mng.window.state("zoomed")
plt.show()

4

এখন পর্যন্ত আমার সেরা প্রচেষ্টা, বিভিন্ন ব্যাককেন্ডকে সমর্থন করে:

from platform import system
def plt_maximize():
    # See discussion: /programming/12439588/how-to-maximize-a-plt-show-window-using-python
    backend = plt.get_backend()
    cfm = plt.get_current_fig_manager()
    if backend == "wxAgg":
        cfm.frame.Maximize(True)
    elif backend == "TkAgg":
        if system() == "win32":
            cfm.window.state('zoomed')  # This is windows only
        else:
            cfm.resize(*cfm.window.maxsize())
    elif backend == 'QT4Agg':
        cfm.window.showMaximized()
    elif callable(getattr(cfm, "full_screen_toggle", None)):
        if not getattr(cfm, "flag_is_max", None):
            cfm.full_screen_toggle()
            cfm.flag_is_max = True
    else:
        raise RuntimeError("plt_maximize() is not implemented for current backend:", backend)

3

টিপলে fকী (বা ctrl+f1.2rc1 মধ্যে) যখন একটি চক্রান্ত এফআরএস একটি চক্রান্ত উইন্ডো পূর্ণস্ক্রীণে হবে। বেশিরভাগই নয়, তবে সম্ভবত আরও ভাল।

এগুলি ব্যতীত, প্রকৃতপক্ষে সর্বাধিকতর করতে আপনাকে জিইউআই টুলকিট নির্দিষ্ট কমান্ডগুলি ব্যবহার করতে হবে (যদি সেগুলি আপনার নির্দিষ্ট ব্যাকএন্ডের জন্য উপস্থিত থাকে)।

এইচটিএইচ


এটি ব্যাখ্যা করে যে আমি কোন কীটি দুর্ঘটনাক্রমে আমার উইন্ডোগুলিকে ফুলস্ক্রিন করে রেখেছি! (এবং কীভাবে এটি পূর্বাবস্থায় আনতে হয়
c

2

আমার সংস্করণগুলিতে (পাইথন ৩.6, এক্লিপস, উইন্ডোজ)) উপরে বর্ণিত স্নিপেটগুলি কাজ করে না, তবে ইক্লিপস / পাইদেব প্রদত্ত ইঙ্গিত সহ (টাইপ করার পরে: এমএনজি।), আমি পেয়েছি:

mng.full_screen_toggle()

মনে হচ্ছে mng-কমান্ড ব্যবহার করা কেবল স্থানীয় উন্নয়নের জন্যই ঠিক আছে ...


2

অতিরিক্ত কীওয়ার্ড আর্গুমেন্ট সহ 'চিত্র.সেট_সাইজ_ইঞ্চস' পদ্ধতিটি ব্যবহার করে দেখুন forward=Trueডকুমেন্টেশন অনুসারে , এই চিত্র উইন্ডোটির আকার পরিবর্তন করা উচিত

আসলে এটি ঘটবে কিনা তা নির্ভর করে আপনি যে অপারেটিং সিস্টেমটি ব্যবহার করছেন তার উপর।


2

@ পাইথোনিওর উত্তরের উপর ভিত্তি করে এখানে একটি ফাংশন রয়েছে। আমি এটিকে একটি ফাংশনে আবদ্ধ করি যা স্বয়ংক্রিয়ভাবে সনাক্ত করে যে এটি কোন ব্যাকএন্ড ব্যবহার করছে এবং এটি সম্পর্কিত ক্রিয়াগুলি করে do

def plt_set_fullscreen():
    backend = str(plt.get_backend())
    mgr = plt.get_current_fig_manager()
    if backend == 'TkAgg':
        if os.name == 'nt':
            mgr.window.state('zoomed')
        else:
            mgr.resize(*mgr.window.maxsize())
    elif backend == 'wxAgg':
        mgr.frame.Maximize(True)
    elif backend == 'Qt4Agg':
        mgr.window.showMaximized()

1

plt.figure(figsize=(6*3.13,4*3.13))প্লটটি আরও বড় করার চেষ্টা করুন ।


1

ঠিক আছে তাই এটি আমার জন্য কাজ করে। আমি পুরো শোম্যাক্সিমাইজ () বিকল্পটি করেছি এবং এটি চিত্রের আকারের অনুপাতে আপনার উইন্ডোটির আকার পরিবর্তন করে, তবে এটি ক্যানভাসকে প্রসারিত এবং 'ফিট' করে না। আমি এর দ্বারা সমাধান করেছি:

mng = plt.get_current_fig_manager()                                         
mng.window.showMaximized()
plt.tight_layout()    
plt.savefig('Images/SAVES_PIC_AS_PDF.pdf') 

plt.show()

0

এটি অগত্যা আপনার উইন্ডোটি সর্বাধিক বাড়িয়ে তোলে না, তবে এটি চিত্রের আকারের অনুপাতে আপনার উইন্ডোটির আকার পরিবর্তন করে:

from matplotlib import pyplot as plt
F = gcf()
Size = F.get_size_inches()
F.set_size_inches(Size[0]*2, Size[1]*2, forward=True)#Set forward to True to resize window along with plot in figure.
plt.show() #or plt.imshow(z_array) if using an animation, where z_array is a matrix or numpy array

এটি এছাড়াও সহায়তা করতে পারে: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html


0

নিম্নলিখিত সমস্ত ব্যাকেন্ডের সাথে কাজ করতে পারে তবে আমি এটি কেবল কিউটি-তে পরীক্ষা করেছি:

import numpy as np
import matplotlib.pyplot as plt
import time

plt.switch_backend('QT4Agg') #default on my system
print('Backend: {}'.format(plt.get_backend()))

fig = plt.figure()
ax = fig.add_axes([0,0, 1,1])
ax.axis([0,10, 0,10])
ax.plot(5, 5, 'ro')

mng = plt._pylab_helpers.Gcf.figs.get(fig.number, None)

mng.window.showMaximized() #maximize the figure
time.sleep(3)
mng.window.showMinimized() #minimize the figure
time.sleep(3)
mng.window.showNormal() #normal figure
time.sleep(3)
mng.window.hide() #hide the figure
time.sleep(3)
fig.show() #show the previously hidden figure

ax.plot(6,6, 'bo') #just to check that everything is ok
plt.show()

0
import matplotlib.pyplot as plt
def maximize():
    plot_backend = plt.get_backend()
    mng = plt.get_current_fig_manager()
    if plot_backend == 'TkAgg':
        mng.resize(*mng.window.maxsize())
    elif plot_backend == 'wxAgg':
        mng.frame.Maximize(True)
    elif plot_backend == 'Qt4Agg':
        mng.window.showMaximized()

তার maximize()আগে কল ফাংশনplt.show()


2 মনিটরের সাথে কাজ করে না। এটি উইন্ডো সাইটটি কেবল পর্দার আকারে (মনিটরের আকার নয়) পরিবর্তন করে এবং এটি স্ক্রিনের উপরের-বাম পিক্সেলের উপরে রাখে না। @ ch271828n সমাধান ভালভাবে কাজ করেছে
অ্যালেক্স

0

ব্যাকের জন্য GTK3Agg , ব্যবহার maximize()- উল্লেখযোগ্য হল একটি ছোট হাতের সঙ্গে মি :

manager = plt.get_current_fig_manager()
manager.window.maximize()

পাইথন 3.8 দিয়ে উবুন্টু 20.04 এ পরীক্ষিত।


0

টাক-ভিত্তিক ব্যাকএন্ডের জন্য (টকঅ্যাগ), এই দুটি বিকল্প উইন্ডোটিকে সর্বাধিক এবং পূর্ণস্ক্রিন করে:

plt.get_current_fig_manager().window.state('zoomed')
plt.get_current_fig_manager().window.attributes('-fullscreen', True)

একাধিক উইন্ডোতে প্লট করার সময়, প্রতিটি উইন্ডোর জন্য আপনার এটি লিখতে হবে:

data = rasterio.open(filepath)

blue, green, red, nir = data.read()
plt.figure(1)
plt.subplot(121); plt.imshow(blue);
plt.subplot(122); plt.imshow(red);
plt.get_current_fig_manager().window.state('zoomed')

rgb = np.dstack((red, green, blue))
nrg = np.dstack((nir, red, green))
plt.figure(2)
plt.subplot(121); plt.imshow(rgb);
plt.subplot(122); plt.imshow(nrg);
plt.get_current_fig_manager().window.state('zoomed')

plt.show()

এখানে উভয় 'ফিগার' আলাদা উইন্ডোতে প্লট করা হয়েছে। যেমন একটি ভেরিয়েবল ব্যবহার করে

figure_manager = plt.get_current_fig_manager()

ভেরিয়েবলটি প্রথম উইন্ডোটিকে বোঝায়, কারণ দ্বিতীয় উইন্ডোটি সর্বোচ্চ নয়।

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