2015-01-02 7 views
19

मैं pyplot tutorial वेबसाइट पर कुछ नमूना कोड से सरल उपयोग कर रहा हूँ matplotlib:अजगर काहिरा त्रुटि

TypeError: Couldn't find foreign struct converter for 'cairo.Context'

मैं:

import matplotlib.pyplot as plt 
plt.plot([1,2,3,4,5]) 
plt.show() 

लेकिन जब मैं इसे चलाने, मैं त्रुटि मिलती है पाइथन 3.4.2 पर, और पाइप से matplotlib, cairocfft> 0.6, numpy> = 1.6 का एक नया स्थापित है।

मैं cairocfft की स्थापना रद्द करने की कोशिश की और आर्क खजाने से हथियाने, लेकिन अब मैं त्रुटि है:

NotImplementedError: Surface.create_for_data: Not Implemented yet.

वहाँ कई पुस्तकालयों की स्थापना के बिना एक बुनियादी लाइन ग्राफ आकर्षित करने के लिए कोई तरीका है? मैं installing pyqt4 पर उत्साहित नहीं हूं, क्योंकि this blogpost अनुशंसा करता है। This github issue गी-काहिरा स्थापित करने का सुझाव देते हैं, लेकिन जी-काहिरा Arch repositories पर नहीं है, और न ही मैं (मेरे अपने खोज असफल?)

मुझे याद है इस को Python2 पर एक हवा किया जा रहा है, लेकिन अब python3 के लिए चले गए PyPI पर यह मिल सकता है ।

+0

काम ठीक से हल किया। मुझे पाइथन 3.4.2 और पायथन-कैरो 1.10.0-4 मिला है। – matsjoyce

+0

क्या आपके पास 'python-gobject' स्थापित है? – nwk

+0

@ एनडब्ल्यूके हां, 'पायथन-गोबजेक्ट' स्थापित है। – JDong

उत्तर

29

अगर किसी को उबंटू 14.04 पर एक ही समस्या हो रही है, जैसा कि मैंने पायथन 3.4.3 का उपयोग किया है। जेडोंग के जवाब से बिट्स और संकेतों का उपयोग करके, मैंने समस्या को हल किया है। (मूल रूप से qt5agg को matplotlib बैकएंड बदल जाते हैं।)

  1. स्थापित python3-pyqt5 sudo apt-get install python3-pyqt5

  2. पता लगाएं कि matplotlibrc फ़ाइल कहां है, तो आप इसे संपादित कर सकते हैं। यह पाइथन कंसोल में निम्नलिखित का उपयोग करके किया जा सकता है। import matplotlib matplotlib.matplotlib_fname()

  3. संपादित matplotlibrc फ़ाइल (आप शायद sudo की आवश्यकता होगी), लाइन backend : के साथ शुरुआत मिल जाए, और backend : qt5agg के लिए इसे बदल। यदि ऐसी रेखा मौजूद नहीं है, तो बस एक बनाएं।

उपरोक्त चरणों ने मुझे उबंटू 14.04 पर हल किया है। मुझे आशा है कि वह मदद करेंगे।

+0

पर ऐसा करने का तरीका मिला पाइथन 3.4 के साथ उबंटू 14.04 में काम करने की पुष्टि - FWIW फ़ाइल दिखाई दे रही है '/ usr/local/lib/python3.4/dist-packages/matplotlib/mpl-data/matplotlibrc' में स्थापित है और यह सभी के लिए समान होना चाहिए (हालांकि @Ray द्वारा सुझाई गई विधि ठीक है)। – Marco

6

यह एक वास्तविक मुद्दा प्रतीत होता है;

/usr/lib/python3.4/site-packages/matplotlib/backends/backend_gtk3agg.py:18: 
UserWarning: The Gtk3Agg backend is known to not work on Python 3.x with pycairo. 
Try installing cairocffi. 
"The Gtk3Agg backend is known to not work on Python 3.x with pycairo." 

अजीब तरह हालांकि, मैं स्थापित किया cairocffi: आगे खेलने पर मुझे एक त्रुटि संदेश मिल गया। मैंने पाया कि सबसे अच्छा समाधान एक अलग बैकएंड का उपयोग करना है, क्योंकि टीसीएसवेल ने टिप्पणियों में सुझाव दिया था। मुझे पीडीएफ को केवल लाइन के साथ बहुत ही स्वीकार्य निर्यात मिला: plt.savefig("Graph.pdf")

स्काईटक्स का उल्लेख है कि बैकएंड को कामों में बदलना। https://stackoverflow.com/a/21791045/2534876 दिखाता है कि यह कैसे करें।

मार्च 2016 अपडेट: plotly matplotlib का एक शानदार विकल्प है जिसका मैं अब उपयोग करता हूं। यह दस्तावेजों को उत्पन्न करने के लिए ब्राउज़र के साथ काम करता है और मेरे पास प्लेटफ़ॉर्म समस्याएं नहीं हैं।

2

पायथन 2 के मामले में।7 यह पैकेज python-pyqt5 स्थापित करने और इस तरह pyplot का उपयोग करके हल किया जा सकता:

import matplotlib 
matplotlib.use('Qt5Agg') 
import matplotlib.pyplot as plt 

यदि आप sudo acces आप भी अपने डिफ़ॉल्ट बैकएंड के रूप में Qt5Agg सेट कर सकते हैं, अपने बैकएंड सेट करने के लिए अन्य तरीकों के लिए Matplotlib Backend देखते हैं।

3

स्थापना पर मैटलप्लिब ने मुझे अपने सिस्टम में असंगतताओं के कारण कैरोक्फी स्थापित करने की चेतावनी दी। NotImplementedError (प्लॉट नहीं खींचे जा रहे हैं) का अनुभव करने के बाद, डेबियन के python3-cairocffi पैकेज को स्थापित करने से समस्या हल हो गई।

+0

इसे वोट दिया जाना चाहिए। क्यूटी में बैकएंड को बदलने से ज्यादा बेहतर समाधान। –

2

स्थापित कर रहा है python-gi-cairo का उपयोग कर sudo apt-get install python-gi-cairo मेरी समस्या आर्क पर मेरे लिए

+0

मेरे मामले में (डेबियन 9.2), स्वीकृत उत्तर में मदद नहीं मिली लेकिन यह एक किया! – phinz

संबंधित मुद्दे