මැට්ප්ලොට්ලිබ් සමඟ ඇඳ ඇති රූපවල ප්‍රමාණය ඔබ වෙනස් කරන්නේ කෙසේද?


2084

මැට්ප්ලොට්ලිබ් සමඟ ඇඳ ඇති රූපයේ ප්‍රමාණය ඔබ වෙනස් කරන්නේ කෙසේද?


761
plt.figure(figsize=(20,10))
StackG

315
හෝfig, ax = plt.subplots(figsize=(20, 10))
alexw

102
රූපයේ ප්‍රමාණය පික්සල් වලින් ඇතැයි සිතමින්, මම (800,600) නියම කළ අතර වැඩසටහන බිඳ වැටුණි! ඒකකය අඟල් බව කරුණාවෙන් සලකන්න.
රාජා

2
@alexw මෙය ලේඛනවල තිබේද?
liang

52
fig = plt.gcf()-> fig.set_size_inches(11,8)ව්යාකූලත්වය එකවරම වළක්වා ගැනීමට.
යූෆොස්

Answers:


1122

රූපය ඔබට ඇමතුම් අත්සන කියයි:

from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

figure(figsize=(1,1)) අඟල්-අඟල් රූපයක් නිර්මාණය කරනු ඇත, එය ඔබ වෙනත් dpi තර්කයක් ලබා නොදුනහොත් පික්සල් 80 -80 -80 වනු ඇත.


95
ඔබ දැනටමත් රූපය නිර්මාණය කර ඇත්නම්, එය 'රූපය 1' යැයි පවසන්න (ඔබ පයිප්ලොට් භාවිතා කරන විට එය පෙරනිමිය වේ), ඔබට රූපය භාවිතා කළ හැකිය (අංක = 1, අත්තික්කා = (8, 6), ...) ඔබ pyplot / pylab භාවිතා කරන්නේ නම් කරන්නේ නම්, හා ඒ ප්රමාණය වෙනස් කිරීමට ආදිය show()උත්පතන කවුළුව නිර්මාණය කිරීමට, ඔබ ඇමතීමට අවශ්යයි figure(num=1,...) පෙර ඔබ ඕනෑම දෙයක් සැලසුම් කරන - pyplot / pylab ඔබට යමක් අඳින්න ඉක්මනින් චරිතයක් නිර්මාණය, සහ උත්පතන දර්ශණය ප්රමාණය මෙම අවස්ථාවේදී සවි කිරීමට.
ඩ්‍රෙවිකෝ

23
ඔබ සුපුරුදු තර්ක ඉවත් කළහොත් ඔබේ පිළිතුර වඩා හොඳ යැයි මට හැඟේ. එය අනවශ්‍ය ලෙස ශබ්ද අනුපාතයට සං signal ාව අඩු කරයි.
frmsaul

3
මෙයින් අදහස් කරන්නේ ඔබ DPI 1 ට සකසන්නේ නම්, අත්තික්කා අඟල් ඒකකයක් වෙනුවට පික්සෙල් ඒකකයක් බවට පත්වනවාද? වෙබ් සහ GUI අතුරුමුහුණත් වල matplotlib භාවිතා කරන විට මෙය වඩාත් ප්‍රයෝජනවත් වනු ඇත.
CMCDragonkai

1
අත්තික්කා (1,1) සමඟ ඔබට රූපයේ 1: 1 ලෙස අනුපාතයක් තිබේද? මගේ පයි ප්‍රස්ථාර සියල්ලම ඕවලාකාර වන නිසාත්, ඒවා වටකුරු කිරීමට මට ඇති එකම ක්‍රමය plot.axis ("සමාන") භාවිතා කිරීම නිසාත් ය. ඔවුන් එකම බලපෑමක් ඇති කරයිද නැතහොත් ඔවුන් වෙනස් ලෙස හැසිරේද?
බ්‍රෙනෝ බයාර්ඩි

2
RenBrenoBaiardi මෙම ප්‍රශ්නය රූපයේ ප්‍රමාණය ගැන ය. සමස්ථ රූපය 1: 1 ක් වුවද, රූපයේ ඉහළින් ඇති අක්ෂවලට තවමත් අසමාන දර්ශන අනුපාතයක් තිබිය හැකි අතර, අක්ෂ කොටුව 1: 1 වුවද, දත්ත x සහ y දිශාවන්ට වෙනස් ලෙස පරිමාණය කළ හැකිය. එබැවින්, නැත, එම විධානය සමාන දර්ශන අනුපාතයක් සහතික නොකරයි.
Jouni K. Seppänen

754

ඔබට දැනටමත් රූපය නිර්මාණය කර ඇත්නම් ඔබට මෙය ඉක්මනින් කළ හැකිය:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

පවත්නා ගු කවුළු එකතු කිරීමකට ප්‍රමාණයේ වෙනස ප්‍රචාරණය කිරීම සඳහා forward=True

fig.set_size_inches(18.5, 10.5, forward=True)

3
මට ගැටලුවක් විසඳා ඇත imshow, දැන් මම මෙම කේතය භාවිතා කරන්නේ කුමන්ත්‍රණ කළ ප්‍රදේශය අවට ඇති ඉඩ ඉවත් කිරීමෙන් පසුවය plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0).
හෙල්ටන්බිකර්

8
ඒ හා සමානව, ඔබට ධාවනය කළ හැකිය fig.set_dpi(100).
එරික් ෂිල්ට්ස්

1
මම මෙය OS X හි ipython 3.7, matplotlib 3.0.3 යටතේ භාවිතා කරමි. රූපයේ ප්‍රමාණය වෙනස් කිරීමට මට හැකියාව ඇත, නමුත් කවුළුව ප්‍රතිප්‍රමාණනය නොකරයි (රූපය කැන්වස් ගැලපේ, නමුත් කැන්වසයට සරිලන පරිදි කවුළුව වැඩෙන්නේ හෝ හැකිලෙන්නේ නැත). ඉදිරි = සත්‍ය යතුරු පද තර්කය මෙම වේදිකාවට අපේක්ෂිත බලපෑමක් ඇති බවක් නොපෙනේ.
කේ. නීල්සන්

358

Deprecation සටහන:
එක් වූයේ නිල Matplotlib මඟ පෙන්වීමක් , එම භාවිතය pylabමොඩියුලය තවදුරටත් නිර්දේශ කරනු ලැබේ. මෙම අනෙක් පිළිතුරෙන්matplotlib.pyplot විස්තර කර ඇති පරිදි කරුණාකර ඒ වෙනුවට මොඩියුලය භාවිතා කිරීම සලකා බලන්න .

පහත සඳහන් දෑ ක්‍රියාත්මක වන බව පෙනේ:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

මෙය රූපයේ පළල අඟල් 5 ක් වන අතර එහි උස අඟල් 10 කි .

රූප පන්තිය පසුව එහි එක් තර්කයක පෙරනිමි අගය ලෙස මෙය භාවිතා කරයි.


3
මෙය අයිපයිතන් නෝට්බුක් එකක ඉහළින්ම ක්‍රියාත්මක වන අතර (ලබා දී ඇති --pylab = inline) දැනටමත් ඉහළ මට්ටමින් ආනයනය කර ඇති rcParams ඇත.
nealmcb

4
මෙය මගේ වින්ඩෝස් යන්ත්‍රයේ OO අතුරුමුහුණත සමඟ පයිප්ලොට් සහ Qt පසුපසට ක්‍රියා කළේ නැත. fig.set_size_inches(18.5, 10.5, forward=True)වැඩ කළා.
බෙනට් බ්‍රවුන්

2
මෙම පිළිතුර දැනට මෙටා
මිස්චා

Python අනුවාදය සඳහා: 3.6.4, matplotlib: 2.2.3 මම ඔබට ලැයිස්තුව සම්මත කිරීමට අවශ්ය හෝ tuple උදා rcParams [ 'figure.figsize'] = (5, 10) හිතන්න
ස්ටීව් Gon

2
පළමු වරට සෛලය ධාවනය කිරීමේදී මෙය ක්‍රියා නොකරන්නේ මන්දැයි ඕනෑම අයෙක් දන්නවාද?
g07kore

328

Plt.rcParams භාවිතා කිරීම

රූප පරිසරය භාවිතා නොකර ප්‍රමාණය වෙනස් කිරීමට ඔබට අවශ්‍ය නම් මෙම ක්‍රියාමාර්ගය ද ඇත. එබැවින් ඔබ plt.plot()උදාහරණයක් ලෙස භාවිතා කරන්නේ නම්, ඔබට පළල සහ උස සහිත ටුපල් එකක් සැකසිය හැකිය.

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

ඔබ පේළිගත කරන විට මෙය ඉතා ප්‍රයෝජනවත් වේ (උදා: IPython Notebook සමඟ). ආසාමෙයර් දුටු පරිදි මෙම ප්‍රකාශය ආනයන ප්‍රකාශවල එකම කොටුව තුළට නොයැවීම වඩාත් සුදුසුය.

සෙ.මී.

මෙම figsizetuple අඟල් එසේ ඔබ සෙන්ටිමීටර එය සකස් කිරීමට අවශ්ය නම් ඔබ 2.54 විසින් ඔවුන් බෙදා වෙන් කිරීමට සඳහා බලන්න ඇති පිළිගන්නා මෙම ප්රශ්නය .


4
විශිෂ්ටයි! එය එක් වරක් සැකසීමට සහ කිහිප වතාවක් කුමන්ත්‍රණය කිරීමට ද ප්‍රයෝජනවත් වේ.
ඔටෝමෝෆික්

කිසියම් හේතුවක් නිසා, මෙය තවදුරටත් ජුපිටර් සටහන් පොතේ ක්‍රියාත්මක නොවන බව පෙනේ (නමුත් පුරුදු වී ඇත).
රේ

AyRay ඔබේ ජුපිටර් සටහන් පොතේ අනුවාදය සහ මා ක්‍රියා කරන ආකාරය ලිවිය හැකිද
GM

@GM අවසන් වරට මා පරීක්ෂා කළ විට එය වින්ඩෝස් 10 සහ ගූගල් ක්‍රෝම් 63.0.3239.84 හි ඇනකොන්ඩා වෙතින් ජුපිටර් අනුවාදය 4.3.0 සහ පයිතන් 3.6.2 විය.
රේ

8
එය ක්‍රියාත්මක කිරීමට මට plt.rcParams["figure.figsize"] = (20,3)අමතර කොටුවකට ඇමතිය යුතුය . ආයාත ප්‍රකාශයේ එකම කොටුව තුළ මා එය ඇමතූ විට එය නොසලකා හරිනු ඇත.
asmaier

274

කරුණාකර සරල කේතයක් පහත පරිදි උත්සාහ කරන්න:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

ඔබ කුමන්ත්‍රණය කිරීමට පෙර රූපයේ ප්‍රමාණය සැකසිය යුතුය.


14
මෙම පිළිතුර මට පවසන්නේ එය m බව atplotlib.pyplot.figureවන අතර අනෙක් අය එය පැහැදිලිව නොකියයි. මම වගේ දේවල් දිගටම උත්සාහ කරන්න matplotlib.figureසහmatplotlib.figure.Figure
ලින්ඩන් සුදු

"_tkinter.TclError: රූප බෆරය සඳහා ප්‍රමාණවත් නිදහස් මතකයක් නොමැත"
සෙරින්

6
plt.figure(figsize=(1,1))ක x ස් චලනයයි. ඔබට ස්තුතියි.
ximiki

ජුපිටර් සටහන් පොතේ, මෙය මට වැඩ කළේය: plt.figure (figsize = (20,10))
අභිෂේක් පූජරි

ජුපිටර් නෝට්බුක් භාවිතා කරන්නන් සඳහා, කරුණාකර ඔබ වෙනත් plt විධානයන්ට පෙර plt.figure (figsize = (15, 10%) භාවිතා කරන බවට වග බලා ගන්න.
යුහාං ලින්

94

ඔබ පැන්ඩාස් හි සංඛ්‍යා ප්‍රමාණය වෙනස් කිරීමට ක්‍රමයක් සොයන්නේ නම් , ඔබට උදා:

df['some_column'].plot(figsize=(10, 5))

කොහෙද dfපැන්ඩස් දත්ත රාමුවක්. නැතහොත්, පවතින රූප හෝ අක්ෂ භාවිතා කිරීමට

fig, ax = plt.subplots(figsize=(10,5))
df['some_column'].plot(ax=ax)

පෙරනිමි සැකසුම් වෙනස් කිරීමට ඔබට අවශ්‍ය නම්, ඔබට පහත සඳහන් දෑ කළ හැකිය:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))

74

ගූගල් හි පළමු සබැඳිය 'matplotlib figure size'වන්නේ ගැලපුම් ඉමේජ්සයිස් ( පිටුවේ ගූගල් හැඹිලියයි ) ය.

මෙන්න ඉහත පිටුවෙන් පරීක්ෂණ පිටපතක්. එය test[1-3].pngඑකම රූපයේ විවිධ ප්‍රමාණයේ ගොනු සාදයි :

#!/usr/bin/env python
"""
This is a small demo file that helps teach how to adjust figure sizes
for matplotlib

"""

import matplotlib
print "using MPL version:", matplotlib.__version__
matplotlib.use("WXAgg") # do this before pylab so you don'tget the default back end.

import pylab
import numpy as np

# Generate and plot some simple data:
x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)

pylab.plot(x,y)
F = pylab.gcf()

# Now check everything with the defaults:
DPI = F.get_dpi()
print "DPI:", DPI
DefaultSize = F.get_size_inches()
print "Default size in Inches", DefaultSize
print "Which should result in a %i x %i Image"%(DPI*DefaultSize[0], DPI*DefaultSize[1])
# the default is 100dpi for savefig:
F.savefig("test1.png")
# this gives me a 797 x 566 pixel image, which is about 100 DPI

# Now make the image twice as big, while keeping the fonts and all the
# same size
F.set_size_inches( (DefaultSize[0]*2, DefaultSize[1]*2) )
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test2.png")
# this results in a 1595x1132 image

# Now make the image twice as big, making all the fonts and lines
# bigger too.

F.set_size_inches( DefaultSize )# resetthe size
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test3.png", dpi = (200)) # change the dpi
# this also results in a 1595x1132 image, but the fonts are larger.

ප්‍රතිදානය:

using MPL version: 0.98.1
DPI: 80
Default size in Inches [ 8.  6.]
Which should result in a 640 x 480 Image
Size in Inches [ 16.  12.]
Size in Inches [ 16.  12.]

සටහන් දෙකක්:

  1. මොඩියුලයේ අදහස් සහ සත්‍ය ප්‍රතිදානය වෙනස් වේ.

  2. ප්‍රමාණයේ වෙනස බැලීමට මෙම පිළිතුර එක් රූප ගොනුවක ඇති පින්තූර තුනම පහසුවෙන් ඒකාබද්ධ කිරීමට ඉඩ දෙයි.


7
එය කරන්නේ කෙසේදැයි සිහිපත් කිරීමට උත්සාහ කරන සෑම අවස්ථාවකම මම මෙම ලිපියෙන් අවසන් වෙමි. ඉතින්, මම සාමාන්‍යයෙන් සොයන කේතය මෙයයි:fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) )
y.selivonchyk

50
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))
plt.plot(x,y) ## This is your plot
plt.show()

ඔබට මෙයද භාවිතා කළ හැකිය:

fig, ax = plt.subplots(figsize=(20, 10))

46

ඔබට සරලව භාවිතා කළ හැකිය ( matplotlib.figure.Figure වෙතින් ):

fig.set_size_inches(width,height)

Matplotlib 2.0.0 වන විට, ඔබේ කැන්වසය වෙනස්කම් දැකගත වහාම ලෙස වනු ඇත forwardඉඟි පද පෙරනිමිTrue .

ඔබට පළල හෝ උස වෙනස් කිරීමට අවශ්‍ය නම්දෙකම වෙනුවට , ඔබට භාවිතා කළ හැකිය

fig.set_figwidth(val) හෝ fig.set_figheight(val)

මේවා වහාම ඔබගේ කැන්වසය යාවත්කාලීන කරනු ඇත, නමුත් Matplotlib 2.2.0 සහ නවතම ඒවා පමණි.

පැරණි අනුවාද සඳහා

නියම කිරීමට අවශ්ය forward=Trueඉහත නිශ්චිතව සඳහන් දේ ට වඩා පැරණි අනුවාද ඔබේ කැන්වස් සජීවී-යාවත්කාලීන කිරීම සඳහා පැහැදිලි ලෙසම. Matplotlib 1.5.0 ට වඩා පැරණි අනුවාද වල පරාමිතියට set_figwidthසහ set_figheightශ්‍රිත සහාය නොදක්වන බව සලකන්න forward.


32

fig = ...රේඛාවෙන් අදහස් දැක්වීමට උත්සාහ කරන්න

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N))**2

fig = plt.figure(figsize=(18, 18))
plt.scatter(x, y, s=area, alpha=0.5)
plt.show()

23

මෙය මට හොඳින් ක්‍රියාත්මක වේ:

from matplotlib import pyplot as plt

F = plt.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


16

ඔබගේ රූපයේ ප්‍රමාණය N වාරයක් වැඩි කිරීමට ඔබේ pl.show () ට පෙර මෙය ඇතුළත් කළ යුතුය:

N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )

එය ipython නෝට්බුක් සමඟද හොඳින් ක්‍රියා කරයි.


10

මැට්ප්ලොට්ලිබ්ට දේශීයව මෙට්‍රික් ක්‍රමය භාවිතා කළ නොහැකි බැවින් , ඔබේ රූපයේ ප්‍රමාණය සෙන්ටිමීටර වැනි සාධාරණ දිගකින් නියම කිරීමට අවශ්‍ය නම්, ඔබට පහත සඳහන් දෑ කළ හැකිය ( gns-ank වෙතින් කේතය ):

def cm2inch(*tupl):
    inch = 2.54
    if isinstance(tupl[0], tuple):
        return tuple(i/inch for i in tupl[0])
    else:
        return tuple(i/inch for i in tupl)

එවිට ඔබට භාවිතා කළ හැකිය:

plt.figure(figsize=cm2inch(21, 29.7))

8

රූපය ඇදගත් විගසම මෙය රූපය ප්‍රතිප්‍රමාණනය කරයි (අවම වශයෙන් Qt4Agg / TkAgg භාවිතා කරයි - නමුත් MacOSX නොවේ - matplotlib 1.4.0 සමඟ):

matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)

7

Psihodelia ගේ පිළිතුර සාමාන්‍යකරණය කිරීම සහ සරල කිරීම. ඔබට රූපයේ වත්මන් ප්‍රමාණය සාධකයක් මගින් වෙනස් කිරීමට අවශ්‍ය නම්sizefactor

import matplotlib.pyplot as plt

# here goes your code

fig_size = plt.gcf().get_size_inches() #Get current size
sizefactor = 0.8 #Set a zoom factor
# Modify the current size by the factor
plt.gcf().set_size_inches(sizefactor * fig_size) 

වත්මන් ප්‍රමාණය වෙනස් කිරීමෙන් පසුව, ඔබ උප පොළ සැකැස්ම මනාව සකස් කළ යුතුය. රූප කවුළුව තුළ ඔබට එය කළ හැකිය GUI, හෝ subplots_adjust විධානය මඟින්

උදාහරණයක් වශයෙන්,

plt.subplots_adjust(left=0.16, bottom=0.19, top=0.82)

5

තවත් විකල්පයක් නම්, matplotlib හි rc () ශ්‍රිතය භාවිතා කිරීම (ඒකකය අඟල්)

import matplotlib
matplotlib.rc('figure', figsize=[10,5])

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.