ทุกครั้งที่เปิด IPython Notebook คำสั่งแรกที่เรียกใช้คือ
%matplotlib inline
มีวิธีใดบ้างในการเปลี่ยนไฟล์กำหนดค่าของฉันเพื่อที่เมื่อฉันเปิดใช้งาน IPython ไฟล์นั้นจะอยู่ในโหมดนี้โดยอัตโนมัติหรือไม่
ทุกครั้งที่เปิด IPython Notebook คำสั่งแรกที่เรียกใช้คือ
%matplotlib inline
มีวิธีใดบ้างในการเปลี่ยนไฟล์กำหนดค่าของฉันเพื่อที่เมื่อฉันเปิดใช้งาน IPython ไฟล์นั้นจะอยู่ในโหมดนี้โดยอัตโนมัติหรือไม่
ipython --matplotlib
ดีกว่า
คำตอบ:
IPython มีโปรไฟล์สำหรับการกำหนดค่าอยู่ที่~/.ipython/profile_*
. profile_default
โปรไฟล์เริ่มต้นที่เรียกว่า ภายในโฟลเดอร์นี้มีไฟล์คอนฟิกูเรชันหลักสองไฟล์:
ipython_config.py
ipython_kernel_config.py
เพิ่มตัวเลือกแบบอินไลน์สำหรับ matplotlib ไปที่ipython_kernel_config.py
:
c = get_config()
# ... Any other configurables you want to set
c.InteractiveShellApp.matplotlib = "inline"
การใช้งานของ%pylab
ที่จะได้รับการวางแผนแบบอินไลน์เป็นกำลังใจ
มันแนะนำขยะทุกประเภทในเนมสเปซของคุณที่คุณไม่ต้องการ
%matplotlib
ในทางกลับกันเปิดใช้งานการพล็อตแบบอินไลน์โดยไม่ต้องฉีดเนมสเปซของคุณ คุณจะต้องทำการโทรอย่างชัดเจนเพื่อนำเข้า matplotlib และ numpy
import matplotlib.pyplot as plt
import numpy as np
ราคาเพียงเล็กน้อยในการพิมพ์การนำเข้าของคุณอย่างชัดเจนควรจะเอาชนะได้อย่างสมบูรณ์เพราะตอนนี้คุณมีรหัสที่สามารถทำซ้ำได้
%matplotlib
หรือทั้งสองตั้งค่าแบ็กเอนด์เริ่มต้นและตั้งค่าโดยอัตโนมัติเพื่อใช้ในทันทีใน สภาพแวดล้อม iPython
matplotlib
vs pylab
นั้น iPython ทำให้ง่ายมากในการเรียกใช้รหัสหลามโดยพลการโดยอัตโนมัติทุกครั้งที่คุณเปิดโดยใช้โปรไฟล์ ผมเชื่อว่ามันเป็นเรื่องธรรมดาที่จะมีรายละเอียดที่คุณทำโดยอัตโนมัติการนำเข้าที่เหมือนกันเช่นimport numpy as np; import pandas as pd; import matplotlib.pyplot as plt
ฯลฯ หมายเหตุ: pylab
จะไม่ได้pyplot
เป็นสิ่งเดียวกับ ฉันต้องใช้เวลาเป็นเดือนกว่าจะรู้ตัว
c.InteractiveShellApp.matplotlib = "inline"
ฉันคิดว่าสิ่งที่คุณต้องการคือเรียกใช้สิ่งต่อไปนี้จากบรรทัดคำสั่ง:
ipython notebook --matplotlib=inline
หากคุณไม่ชอบพิมพ์ที่บรรทัด cmd ทุกครั้งคุณสามารถสร้างนามแฝงเพื่อทำแทนคุณได้
--matplotlib inline
และลบเนื้อหา --pylab ดูโพสต์นี้ของ ipython devel why: carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
matplotlib=inline
: มันจะทำให้เคอร์เนลทุกตัวที่คุณเปิดใช้งานช้าลงไม่ว่าคุณจะต้องการใช้ matplotlib หรือไม่ก็ตาม
--matplotlib
หรือ--pylab
ถูกละเว้น
%pylab
หรือใช้%matplotlib
แทน
การตั้งค่าถูกปิดใช้งานในJupyter 5.X
และสูงกว่าโดยการเพิ่มโค้ดด้านล่าง
pylab = Unicode('disabled', config=True,
help=_("""
DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
""")
)
@observe('pylab')
def _update_pylab(self, change):
"""when --pylab is specified, display a warning and exit"""
if change['new'] != 'warn':
backend = ' %s' % change['new']
else:
backend = ''
self.log.error(_("Support for specifying --pylab on the command line has been removed."))
self.log.error(
_("Please use `%pylab{0}` or `%matplotlib{0}` in the notebook itself.").format(backend)
)
self.exit(1)
และในเวอร์ชันก่อนหน้านี้ส่วนใหญ่เป็นคำเตือน แต่นี่ไม่ใช่ปัญหาใหญ่เพราะ Jupyter ใช้แนวคิดของkernels
และคุณสามารถค้นหาเคอร์เนลสำหรับโครงการของคุณได้โดยเรียกใช้คำสั่งด้านล่าง
$ jupyter kernelspec list
Available kernels:
python3 /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3
สิ่งนี้ทำให้ฉันมีเส้นทางไปยังโฟลเดอร์เคอร์เนล ตอนนี้ถ้าฉันเปิด/Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.json
ไฟล์ฉันจะเห็นสิ่งที่ต้องการด้านล่าง
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
],
"display_name": "Python 3",
"language": "python"
}
คุณจะเห็นคำสั่งที่เรียกใช้เพื่อเปิดเคอร์เนล ดังนั้นหากคุณเรียกใช้คำสั่งด้านล่าง
$ python -m ipykernel_launcher --help
IPython: an enhanced interactive Python shell.
Subcommands
-----------
Subcommands are launched as `ipython-kernel cmd [args]`. For information on
using subcommand 'cmd', do: `ipython-kernel cmd -h`.
install
Install the IPython kernel
Options
-------
Arguments that take values are actually convenience aliases to full
Configurables, whose aliases are listed on the help line. For more information
on full configurables, see '--help-all'.
....
--pylab=<CaselessStrEnum> (InteractiveShellApp.pylab)
Default: None
Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
Pre-load matplotlib and numpy for interactive use, selecting a particular
matplotlib backend and loop integration.
--matplotlib=<CaselessStrEnum> (InteractiveShellApp.matplotlib)
Default: None
Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
Configure matplotlib for interactive use with the default matplotlib
backend.
...
To see all available configurables, use `--help-all`
ตอนนี้ถ้าเราอัปเดตkernel.json
ไฟล์ของเราเป็น
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
"--pylab",
"inline"
],
"display_name": "Python 3",
"language": "python"
}
และถ้าฉันเรียกใช้jupyter notebook
กราฟจะเป็นไปโดยอัตโนมัติinline
โปรดทราบว่าแนวทางด้านล่างนี้ยังใช้งานได้โดยที่คุณสร้างไฟล์บนเส้นทางด้านล่าง
~ / .ipython / profile_default / ipython_kernel_config.py
c = get_config()
c.IPKernelApp.matplotlib = 'inline'
แต่ข้อเสียของแนวทางนี้คือนี่คือผลกระทบทั่วโลกต่อทุกสภาพแวดล้อมโดยใช้ python คุณสามารถพิจารณาว่าเป็นข้อดีเช่นกันหากคุณต้องการมีพฤติกรรมร่วมกันในสภาพแวดล้อมที่มีการเปลี่ยนแปลงเพียงครั้งเดียว
ดังนั้นเลือกแนวทางที่คุณต้องการใช้ตามความต้องการของคุณ
ในipython_config.py
ไฟล์ของคุณค้นหาบรรทัดต่อไปนี้
# c.InteractiveShellApp.matplotlib = None
และ
# c.InteractiveShellApp.pylab = None
และไม่แสดงความคิดเห็น จากนั้นเปลี่ยนNone
เป็นแบ็กเอนด์ที่คุณใช้ (ฉันใช้'qt4'
) และบันทึกไฟล์ รีสตาร์ท IPython และควรโหลด matplotlib และ pylab - คุณสามารถใช้dir()
คำสั่งเพื่อตรวจสอบว่าโมดูลใดอยู่ในเนมสเปซส่วนกลาง
ใน (ปัจจุบัน) IPython 3.2.0 (Python 2 หรือ 3)
เปิดไฟล์คอนฟิกูเรชันภายในโฟลเดอร์. ipython ที่ซ่อนอยู่
~/.ipython/profile_default/ipython_kernel_config.py
เพิ่มบรรทัดต่อไปนี้
c.IPKernelApp.matplotlib = 'inline'
เพิ่มในภายหลัง
c = get_config()
นอกจาก @Kyle Kelley และ @DGrady นี่คือรายการที่สามารถพบได้ในไฟล์
$HOME/.ipython/profile_default/ipython_kernel_config.py
(หรือโปรไฟล์ใดก็ตามที่คุณสร้างขึ้น)
เปลี่ยน
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.IPKernelApp.matplotlib = none
ถึง
# Configure matplotlib for interactive use with the default matplotlib backend.
c.IPKernelApp.matplotlib = 'inline'
จากนั้นจะใช้งานได้ทั้งในเซสชัน ipython qtconsole และโน้ตบุ๊ก
สร้างใด ๆ.py
แฟ้มใน~/.ipython/profile_default/startup/
ที่มี
get_ipython().magic('matplotlib inline')