จะทำให้แปลงอินไลน์ใน Jupyter Notebook ใหญ่ขึ้นได้อย่างไร


263

ฉันได้แปลงอินไลน์ลงในสมุดบันทึก Ipython ของฉันด้วย " %matplotlib inline."

ตอนนี้พล็อตจะปรากฏขึ้น อย่างไรก็ตามมันมีขนาดเล็กมาก มีวิธีทำให้ขนาดใหญ่ขึ้นโดยใช้การตั้งค่าโน้ตบุ๊กหรือการตั้งค่าพล็อตหรือไม่?

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


172

ใช่เล่นด้วยfiguresizeอย่างนั้น (ก่อนที่คุณจะเรียกแผนย่อยของคุณ):

fig=plt.figure(figsize=(18, 16), dpi= 80, facecolor='w', edgecolor='k')

28
f, (ax1, ax2, ax3) = plt.subplots (1,3, sharex = 'col', sharey = 'แถว', figsize = (18, 16)) สำหรับกรณีเฉพาะนี้
Rol

11
ไม่ทำงาน, ไม่เป็นผล. การเปลี่ยนรูปในกรณีของฉันเพียงเปลี่ยนอัตราส่วนภาพ ความกว้างของตัวเลขทั้งหมดยังคงอยู่
Aleksejs Fomins

ถูกต้องสำหรับตัวเลขที่มีขนาดใหญ่เกินกว่าที่จะพอดีกับหน้าได้ มันยังคงมีประโยชน์สำหรับการเปลี่ยนอัตราส่วนภาพตามที่คุณบันทึกไว้
roadrunner66

1
การเพิ่ม dpi เป็น '200' ให้ผลลัพธ์ที่ดีกว่าการเปลี่ยนขนาดของรูป
Adithya Bhat

ใช่ดู @Hagne ด้านล่าง
roadrunner66

403

ขนาดตัวเลขเริ่มต้น (เป็นนิ้ว) ถูกควบคุมโดย

matplotlib.rcParams['figure.figsize'] = [width, height]

ตัวอย่างเช่น:

import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [10, 5]

สร้างรูปที่มี 10 (กว้าง) x 5 (สูง) นิ้ว


7
สิ่งนี้มีประโยชน์มากขึ้นกว่าการใช้กลยุทธ์ set-it-and-forget-it
ijoseph

2
ยิ่งใหญ่ ดิ้นรนกับขนาด boxplot ของ pandas และทำให้มันคงที่ ด้วยเหตุผลบางอย่างfigsize=(x,y)ข้อโต้แย้งไม่ได้ผลในจูปีเตอร์ อย่างไรก็ตามการปรับเปลี่ยนmatplob.rcParamsตามที่คุณแนะนำจะทำงานได้อย่างสมบูรณ์แบบ
0_0

29
ให้แน่ใจว่าคุณทำงานนี้หลังจากที่%matplotlib inlineทำงาน
uut

@uut นี่ไม่ใช่ค่าเริ่มต้นหรือ
Verena Haunschmid

4
@VerenaHaunschmid ทำงาน%matplotlib inlineหลังจากตั้งค่า rcParams ดูเหมือนว่าจะเขียนทับขนาดรูปกลับเป็นค่าเริ่มต้น
uut

62

ฉันพบว่าใช้%matplotlib notebookงานได้ดีกว่าฉันมากกว่าแบบอินไลน์กับสมุดบันทึก Jupyter

โปรดทราบว่าคุณอาจต้องรีสตาร์ทเคอร์เนลหากคุณเคยใช้%matplotlib inlineมาก่อน

อัปเดต 2019: หากคุณใช้ Jupyter Lab คุณอาจต้องการใช้ %matplotlib widget


5
บางทีงานนี้ในบางกรณี แต่เมื่อฉันพยายามนี้ในเหมืองจะให้ฉันฉันเป็นภาพที่ว่างเปล่ากับ df.plot()dataframe ฉันต้องกลับไปที่%matplotlib inline
tsando

8
@tsando ฉันเห็นปัญหาที่การสลับจาก%matplotlib inlineเป็น%matplotlib notebookโดยไม่ต้องรีสตาร์ทเคอร์เนลจะให้เอาต์พุตว่างเปล่า เปลี่ยนจาก%matplotlib notebookเป็นใช้%matplotlib inlineงานได้ดี
SlimCheney

4
ขอบคุณ @SlimCheney ฉันขอยืนยันว่าสิ่งที่คุณพูดเป็นความจริง - มันทำงานถ้าคุณเริ่มต้นเคอร์เนล
tsando

1
นี่เป็นการเต้นที่พยายามตั้งค่าการแพนและซูมด้วยมือ
beldaz

1
มันไม่ทำงานแม้หลังจากรีสตาร์ทเคอร์เนล มันให้ผลลัพธ์เปล่า
Kardi Teknomo

31

หากคุณต้องการให้ภาพของคุณมีขนาดใหญ่ขึ้นโดยไม่ต้องเปลี่ยนลักษณะทั่วไปของรูปของคุณเพิ่มความละเอียดของรูป การเปลี่ยนขนาดรูปภาพตามคำแนะนำในคำตอบอื่น ๆ ส่วนใหญ่จะเปลี่ยนลักษณะที่ปรากฏเนื่องจากขนาดแบบอักษรไม่ปรับตามขนาด

import matplotlib.pylab as plt
plt.rcParams['figure.dpi'] = 200

19

คำถามเกี่ยวกับmatplotlibแต่เพื่อประโยชน์ของผู้ใช้ R ที่จบลงที่นี่ให้ชื่อเรื่องผู้ไม่เชื่อเรื่องภาษา:

หากคุณใช้เคอร์เนล R เพียงใช้:

options(repr.plot.width=4, repr.plot.height=3)

11

หากต้องการปรับขนาดของรูปหนึ่ง:

import matplotlib.pyplot as plt

fig=plt.figure(figsize=(15, 15))

หากต้องการเปลี่ยนการตั้งค่าเริ่มต้นและแปลงทั้งหมดของคุณ:

import matplotlib.pyplot as plt

plt.rcParams['figure.figsize'] = [15, 15]


0

รายละเอียดเล็ก ๆ แต่มีความสำคัญสำหรับการปรับขนาดตัวเลขแบบครั้งเดียว (เนื่องจากผู้แสดงความเห็นหลายคนรายงานว่า "สิ่งนี้ไม่ได้ผลสำหรับฉัน"):

คุณควรทำ plt.figure (figsize = (,)) PRIOR เพื่อกำหนดพล็อตที่แท้จริงของคุณ ตัวอย่างเช่น:

สิ่งนี้ควรปรับขนาดของพล็อตตามรูปที่คุณระบุไว้อย่างถูกต้อง:

values = [1,1,1,2,2,3]
_ = plt.figure(figsize=(10,6))
_ = plt.hist(values,bins=3)
plt.show()

ในกรณีนี้จะแสดงพล็อตที่มีการตั้งค่าเริ่มต้นดูเหมือนจะ "ละเว้น" figsize:

values = [1,1,1,2,2,3]
_ = plt.hist(values,bins=3)
_ = plt.figure(figsize=(10,6))
plt.show()
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.