matplotlib ไม่แสดงภาพวาดของฉันแม้ว่าฉันจะเรียก pyplot.show ()


175

ต้องการความช่วยเหลือเกี่ยวกับ matplotlib ใช่ฉันไม่ลืมเรียก pyplot.show ()

$ ipython --pylab

import matplotlib.pyplot as p 
p.plot(range(20), range(20))

มันจะส่งกลับmatplotlib.lines.Line2D at 0xade2b2cเป็นเอาท์พุท

p.show()

ไม่มีอะไรเกิดขึ้น ไม่มีข้อความแสดงข้อผิดพลาด ไม่มีหน้าต่างใหม่ ไม่มีอะไร ฉันติดตั้งmatplotlibโดยใช้ pip และฉันไม่ได้รับข้อความผิดพลาดใด ๆ

รายละเอียด:

ฉันใช้,

  • อูบุนตู
  • IPython v0.11
  • Python v2.6.6
  • matplotlib v1.0.1

คำตอบ:


177

หากฉันตั้งแบ็กเอนด์ของฉันไปtemplateใน~/.matplotlib/matplotlibrcแล้วฉันสามารถทำซ้ำอาการของคุณ:

~ / .matplotlib / matplotlibrc:

# backend      : GtkAgg
backend      : template

โปรดทราบว่าไฟล์อาจไม่อยู่ในไดเรกทอรีmatplotlibrc ~/.matplotlib/ในกรณีนี้รหัสต่อไปนี้แสดงว่ามันอยู่ที่ไหน:

>>> import matplotlib
>>> matplotlib.matplotlib_fname()

In [1]: import matplotlib.pyplot as p

In [2]: p.plot(range(20),range(20))
Out[2]: [<matplotlib.lines.Line2D object at 0xa64932c>]

In [3]: p.show()

หากคุณแก้ไข~/.matplotlib/matplotlibrcและเปลี่ยนแบ็กเอนด์เป็นอย่างที่GtkAggคุณควรเห็นพล็อต คุณสามารถแสดงรายการแบ็กเอนด์ทั้งหมดที่มีอยู่ในเครื่องของคุณด้วย

import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)

ควรส่งคืนรายการดังนี้:

['GTK', 'GTKAgg', 'GTKCairo', 'FltkAgg', 'MacOSX', 'QtAgg', 'Qt4Agg',
'TkAgg', 'WX', 'WXAgg', 'CocoaAgg', 'agg', 'cairo', 'emf', 'gdk', 'pdf',
'ps', 'svg', 'template']

อ้างอิง:


2
ฉันพยายาม แต่ฉันพบข้อผิดพลาดเช่น:ImportError: No module named _backend_gdk
Baskaya

6
ขออภัยสำหรับความคิดเห็นมากมาย มันได้ผล. ฉันลอง Qt4Agg แล้วก็กดปุ่ม ขอบคุณ :) .. สุดท้ายสิ่งที่ฉันสามารถหา matplotlibrc เริ่มต้นหรือมีวิธีการสร้างมันได้หรือไม่
Baskaya

ขออภัยในความไม่เรียบร้อย ฉันคิดว่าฉันพบ
Baskaya

8
คำตอบนี้เก่าตอนนี้ config ควรจะอยู่ใน~/.config/matplotlib/matplotlibrc(สำหรับ python 3 อย่างน้อย) ฉันเพิ่งมีปัญหาที่เกี่ยวข้องและผมคิดว่ามันมีสาเหตุมาจากการใช้ matplotlib ในหลาม 2.7 ซึ่งสร้าง~/.matplotlib/ไดเรกทอรีและหยุดหลาม 3 ~/.config/matplotlib/จากการอ่านการตั้งค่าใน การลบ~/.matplotlib/แก้ไขปัญหาสำหรับฉัน
naught101

5
6 ปีต่อมาและปัญหานี้ยังคงมีอยู่ ... ตอนนี้ฉันจำได้ว่าทำไมฉันเกลียด Python: ปัญหาในทุกบรรทัดของรหัส
pookie

70

ฉันพบปัญหาเดียวกันกับ Ubuntu 12.04 เพราะฉันติดตั้ง matplotlib (ใน virtualenv) โดยใช้

pip install matplotlib

เพื่อให้เรื่องสั้นสั้นคำแนะนำของฉันคือ: อย่าพยายามติดตั้ง matplotlib โดยใช้ pip หรือด้วยมือ ให้ผู้จัดการแพ็คเกจจริง (เช่น apt-get / synaptic) ติดตั้งและอ้างอิงทั้งหมดสำหรับคุณ

น่าเสียดายที่แบ็กเอนด์ของ matplotlib (วิธีการอื่นสำหรับการเรนเดอร์แปลงของคุณ) มีการพึ่งพาทุกประเภทที่ pip จะไม่จัดการ ยิ่งแย่กว่านั้นมันล้มเหลวอย่างเงียบ ๆ นั่นคือpip install matplotlibดูเหมือนว่าจะติดตั้ง matplotlib สำเร็จ แต่เมื่อคุณพยายามใช้ (เช่นpyplot.show()) จะไม่มีหน้าต่างการลงจุดปรากฏขึ้น ฉันลองแบ็กเอนด์ต่าง ๆ ทั้งหมดที่ผู้คนบนเว็บแนะนำ (Qt4Agg, GTK ฯลฯ ) และพวกเขาทั้งหมดล้มเหลว (เช่นเมื่อฉันพยายามนำเข้า matplotlib.pyplot ฉันได้รับImportErrorเพราะพยายามนำเข้าการพึ่งพาที่ขาดหายไป) จากนั้นฉันค้นคว้าวิธีการติดตั้งการพึ่งพาเหล่านั้น แต่มันทำให้ฉันต้องการเลิกใช้ pip (ภายใน virtualenv) เป็นโซลูชันการติดตั้งที่ทำงานได้สำหรับแพ็คเกจใด ๆ ที่มีการขึ้นต่อกันที่ไม่ใช่ Python

ประสบการณ์ทั้งหมดทำให้ฉันคลานกลับไปที่ apt-get / synaptic (เช่นตัวจัดการแพ็คเกจ Ubuntu) เพื่อติดตั้งซอฟต์แวร์เช่น matplotlib มันทำงานได้อย่างสมบูรณ์ แน่นอนนั่นหมายความว่าคุณสามารถติดตั้งลงในไดเรกทอรีระบบของคุณเท่านั้นไม่มี virtualenv goodness และคุณติดอยู่กับเวอร์ชันที่ Ubuntu จำหน่ายซึ่งอาจเป็นวิธีที่อยู่เบื้องหลังเวอร์ชันปัจจุบัน ...


2
คำตอบของคุณคือ BIT ที่มีความยาวคุณอาจพิจารณาเลือก OP ให้สั้นลง
theJollySin

5
คุณลอง--system-site-packagesตัวเลือกแล้วหรือยัง
Tianyang Li

1
% ริสโตเฟอร์ลีปัญหากับตัวเลขที่ไม่แสดงโดยไม่มีการร้องเรียนข้อผิดพลาด / อื่น ๆ เป็นเพราะแบ็กเอนด์เริ่มต้นเมื่อคุณเป็นpip install aggฉันไม่แน่ใจว่าทำไม แต่คุณสามารถเปลี่ยนได้ตามคำตอบของ unutbu pipมีข้อได้เปรียบที่สำคัญของการติดตั้งรุ่นที่ทันสมัย ​​- aptติดตั้งรุ่นที่ล้าสมัย บางครั้งมีการแก้ไขข้อบกพร่อง / คุณสมบัติใหม่ที่คุณต้องการ / ต้องการ
drevicko

2
เลิกใช้งานvirtualenvได้เลย! และฉันก็สามารถที่จะติดตั้ง matplotlib 1.4 จาก systemwide แหล่งที่มา (บน Ubuntu) virtualenvแต่ไม่อยู่ภายใต้
osa

1
และอะไรคือทางออกสำหรับพวกเราที่ติดอยู่บนเครื่องทำงาน Windows ที่ไม่สามารถใช้ apt-get ได้?
ale19

34

% matplotlib แบบอินไลน์

สำหรับฉันที่ทำงานกับโน้ตบุ๊กให้เพิ่มบรรทัดด้านบนก่อนที่พล็อตจะทำงาน


ฉันจำเป็นต้องใช้%pylab inlineในสมุดบันทึกของฉันตามที่ระบุไว้โดย @Bhanu Pratap Singh
Reed Sandberg

10

สำหรับการอ้างอิงในอนาคต,

ฉันพบปัญหาเดียวกัน - pylab ไม่แสดงภายใต้ ipython ปัญหาได้รับการแก้ไขโดยการเปลี่ยนไฟล์ปรับแต่งของ ipython {ipython_config.py} ในไฟล์ปรับแต่ง

c.InteractiveShellApp.pylab = 'auto'

ฉันเปลี่ยน 'อัตโนมัติ' เป็น 'qt' และตอนนี้ฉันเห็นกราฟ


5
หรือใช้ "ipython --pylab = qt"
andrew cooke

นี้จะทำงาน แต่ก็เป็นเพียงการแก้ปัญหาบางส่วน: ถ้าแบ็กเอนด์เริ่มต้นของคุณaggผมไม่สิ่งที่จะทำงานหรือแปลงจะแสดงเมื่อคุณเรียกใช้สคริปต์โดยตรงเช่น:%pylab inline python myscript.pyคำตอบของ unutbu ควรแก้ไขได้ทุกที่
drevicko


8

สิ่งที่แก้ไขปัญหาของฉันได้เพียงแค่ใช้สองบรรทัดด้านล่างในสมุดบันทึก ipython ที่ด้านบน

%matplotib inline
%pylab inline

และมันก็ใช้งานได้ ฉันใช้ Ubuntu16.04 และ ipython-5.1


โปรดแก้ไขการจัดรูปแบบของความคิดเห็นด้านบน ... ขอบคุณ
Saras Arya

เสร็จสิ้น - ถึงแม้ว่าโพสต์บล็อกนี้ทุบตี pylab แต่คุณจะได้รับแนวคิดว่าทำไมการเพิ่ม%pylab inlineทำให้ทำงาน
Bhanu Pratap Singh

2

ฉันต้องติดตั้ง matplotlib จากซอร์สเพื่อให้ใช้งานได้ คำแนะนำที่สำคัญ (จากhttp://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/ ) คือ:

$ workon plotting
$ pip uninstall matplotlib
$ git clone https://github.com/matplotlib/matplotlib.git
$ cd matplotlib
$ python setup.py install

โดยการเปลี่ยนแบ็กเอนด์ตามที่ @unutbu พูดว่าฉันเพิ่งเจอปัญหามากมายกับแบ็กเอนด์ต่าง ๆ ที่ไม่ทำงาน


1
ใช้งานการรักษาใช้ขั้นตอนการตั้งค่า git clone และ python เท่านั้น แต่เมื่อฉันรันด้วย plt.show () ไม่มีปัญหา
Steve

2

การเพิ่มสองบรรทัดต่อไปนี้ก่อนที่จะนำเข้า pylab ดูเหมือนว่าจะทำงานให้ฉัน

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np

0

อย่าลืมเปิดใช้งานสคริปต์เริ่มต้นนี้: (การตั้งค่า> คอนโซล> ตัวเลือกขั้นสูง)

/usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py

หากเปิดใช้งาน PYTHONSTARTUP มาตรฐานคุณจะไม่มีพล็อตเชิงโต้ตอบ


0

คล้ายกับ @Rikki ผมแก้ปัญหานี้โดยการอัพเกรดด้วยmatplotlib pip install matplotlib --upgradeหากคุณไม่สามารถอัปเกรดการถอนการติดตั้งและติดตั้งใหม่อาจทำงานได้

pip uninstall matplotlib
pip install matplotlib

0

สำหรับฉันปัญหาเกิดขึ้นถ้าฉันเพียงแค่สร้างไฟล์เปล่า matplotlibrcภายใต้~/.matplotlibบน macOS การเพิ่ม "แบ็กเอนด์: macosx" ในนั้นจะช่วยแก้ปัญหา

ฉันคิดว่ามันเป็นข้อผิดพลาด: หากbackendไม่ได้ระบุไว้ในของฉันmatplotlibrcก็ควรใช้ค่าเริ่มต้น



0

ฉันพบว่าฉันต้องการwindow = Tk()แล้วwindow.mainloop()


คุณสามารถเพิ่มคำอธิบายเล็กน้อยได้ไหม? โซลูชันของคุณแตกต่างจากโซลูชันอื่นอย่างไร
Ralf Stubner

-2

สำหรับ Ubuntu 12.04:

sudo apt-get install python-qt4
virtualenv .env --no-site-packages
source .env/bin/activate
easy_install -U distribute
ln -s /usr/lib/python2.7/dist-packages/PyQt4 .
ln -s /usr/lib/python2.7/dist-packages/sip.so .
pip install matplotlib
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.