Hanya untuk rasa ingin tahu, saya ingin tahu bagaimana melakukan ini dalam kode di bawah ini. Saya telah mencari jawaban tetapi tidak berguna.
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()
python
matplotlib
Santiago Lovera
sumber
sumber
plt.get_current_fig_manager().window.state('zoomed')
laluplt.show()
.Jawaban:
Saya biasanya menggunakan
mng = plt.get_current_fig_manager() mng.frame.Maximize(True)
sebelum panggilan ke
plt.show()
, dan saya mendapatkan jendela yang dimaksimalkan. Ini hanya berfungsi untuk backend 'wx'.EDIT:
untuk backend Qt4Agg, lihat jawaban kwerenda .
sumber
mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'
ke Matplotlib 1.2.0MacOSX
backend? TheFigureManagerMac
tampaknya memiliki tidak atributwindow
atauframe
.Saya menggunakan Windows (WIN7), menjalankan Python 2.7.5 & Matplotlib 1.3.1.
Saya dapat memaksimalkan jendela Gambar untuk TkAgg, QT4Agg, dan wxAgg menggunakan baris berikut:
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()
Semoga ringkasan dari jawaban sebelumnya (dan beberapa tambahan) digabungkan dalam contoh kerja (setidaknya untuk windows) membantu. Bersulang
sumber
figManager.window.showMaximized()
, jendela layar penuh yang dimaksimalkan baru saja muncul. Baris berikutnya:plt.show()
tampilkan saja jendela lain yang memplot data dalam jendela ukuran normal._tkinter.TclError: bad argument "zoomed": must be normal, iconic, or withdrawn
(Ubuntu 16.04).Dengan Qt backend (FigureManagerQT), perintah yang tepat adalah:
sumber
plt.show()
sesudahnya. Jawaban yang bagus, bekerja di windows!AttributeError: '_tkinter.tkapp' object has no attribute 'showMaximized'
menggunakan Windows.Ini membuat jendela mengambil layar penuh untuk saya, di bawah Ubuntu 12.04 dengan backend TkAgg:
sumber
Bagi saya tidak ada hal di atas yang berhasil. Saya menggunakan backend Tk di Ubuntu 14.04 yang berisi matplotlib 1.3.1.
Kode berikut membuat jendela plot layar penuh yang tidak sama dengan memaksimalkan tetapi melayani tujuan saya dengan baik:
from matplotlib import pyplot as plt mng = plt.get_current_fig_manager() mng.full_screen_toggle() plt.show()
sumber
Ini harus bekerja ( setidaknya dengan TkAgg):
wm = plt.get_current_fig_manager() wm.window.state('zoomed')
(diadopsi dari yang di atas dan Menggunakan Tkinter, apakah ada cara untuk mendapatkan ukuran layar yang dapat digunakan tanpa memperbesar tampilan jendela? )
sumber
TkAgg
, bukanTkApp
, bukan?Ini agak hacky dan mungkin tidak portabel, hanya gunakan jika Anda mencari yang cepat dan kotor. Jika saya hanya mengatur gambar yang jauh lebih besar dari layar, dibutuhkan persis seluruh layar.
fig = figure(figsize=(80, 60))
Faktanya, di Ubuntu 16.04 dengan Qt4Agg, ini memaksimalkan jendela (bukan layar penuh) jika lebih besar dari layar. (Jika Anda memiliki dua monitor, itu hanya memaksimalkannya di salah satunya).
sumber
Saya menemukan ini untuk mode layar penuh di Ubuntu
#Show full screen mng = plt.get_current_fig_manager() mng.full_screen_toggle()
sumber
Saya
mng.frame.Maximize(True) AttributeError: FigureManagerTkAgg instance has no attribute 'frame'
juga.Kemudian saya melihat melalui atribut
mng
has, dan saya menemukan ini:Itu berhasil untuk saya.
Jadi bagi orang yang memiliki masalah yang sama, Anda boleh mencoba cara ini.
Omong-omong, versi Matplotlib saya adalah 1.3.1.
sumber
plt.show()
. Tidak ada di jendela layar penuh ini, ada saran?Satu-satunya solusi yang bekerja pada Win 10 dengan sempurna.
import matplotlib.pyplot as plt plt.plot(x_data, y_data) mng = plt.get_current_fig_manager() mng.window.state("zoomed") plt.show()
sumber
Upaya terbaik saya sejauh ini, mendukung backend yang berbeda:
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)
sumber
Menekan
f
tombol (atauctrl+f
di 1.2rc1) ketika difokuskan pada plot akan layar penuh jendela plot. Tidak cukup maksimal, tapi mungkin lebih baik.Selain itu, untuk benar-benar memaksimalkan, Anda perlu menggunakan perintah khusus GUI Toolkit (jika ada untuk backend spesifik Anda).
HTH
sumber
Dalam versi saya (Python 3.6, Eclipse, Windows 7), potongan yang diberikan di atas tidak berfungsi, tetapi dengan petunjuk yang diberikan oleh Eclipse / pydev (setelah mengetik: mng.), Saya menemukan:
Tampaknya menggunakan mng-commands tidak masalah hanya untuk pengembangan lokal ...
sumber
Coba gunakan metode 'Figure.set_size_inches', dengan argumen kata kunci tambahan
forward=True
. Menurut dokumentasi , ini harus mengubah ukuran jendela gambar.Apakah itu benar - benar terjadi akan tergantung pada sistem operasi yang Anda gunakan.
sumber
Berikut adalah fungsi berdasarkan jawaban @ Pythonio. Saya merangkumnya menjadi fungsi yang secara otomatis mendeteksi backend mana yang digunakannya dan melakukan tindakan yang sesuai.
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()
sumber
Cobalah
plt.figure(figsize=(6*3.13,4*3.13))
untuk memperbesar plot.sumber
Ok jadi inilah yang berhasil untuk saya. Saya melakukan seluruh opsi showMaximize () dan itu mengubah ukuran jendela Anda secara proporsional dengan ukuran gambar, tetapi tidak meluas dan 'pas' dengan kanvas. Saya menyelesaikan ini dengan:
mng = plt.get_current_fig_manager() mng.window.showMaximized() plt.tight_layout() plt.savefig('Images/SAVES_PIC_AS_PDF.pdf') plt.show()
sumber
Ini tidak selalu memaksimalkan jendela Anda, tetapi mengubah ukuran jendela Anda secara proporsional dengan ukuran gambar:
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
Ini mungkin juga membantu: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html
sumber
Berikut ini mungkin bekerja dengan semua backend, tetapi saya hanya mengujinya di QT:
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()
sumber
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()
Kemudian panggil fungsi
maximize()
sebelumnyaplt.show()
sumber
Untuk GTK3Agg backend , gunakan
maximize()
- terutama dengan huruf kecil m :Diuji di Ubuntu 20.04 dengan Python 3.8.
sumber
Untuk backend berbasis Tk (TkAgg), kedua opsi ini memaksimalkan & layar penuh jendela:
plt.get_current_fig_manager().window.state('zoomed') plt.get_current_fig_manager().window.attributes('-fullscreen', True)
Saat membuat plot menjadi beberapa jendela, Anda perlu menulis ini untuk setiap jendela:
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()
Di sini, kedua 'gambar' diplot di jendela terpisah. Menggunakan variabel seperti
mungkin tidak memaksimalkan jendela kedua, karena variabel masih mengacu pada jendela pertama.
sumber