omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    OO style matplotlib?

    Pythonista
    2
    2
    2171
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • bennettbrowniowa
      bennettbrowniowa last edited by

      First, WOW! I love Pythonista already! Thank you to creators and contributors!

      I am using matplotlib and prefer to use the OO style of coding as described <a href="http://matplotlib.org/1.3.1/faq/usage_faq.html">here</a>. In other Python environments, I have no difficulty doing this, but in Pythonista the script

      import matplotlib.pyplot as plt
      fig, ax = plt.subplots(1, 1)
      ax.plot(1, 1, 'ro')
      fig.show()
      

      produces the error "UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure."

      I tried adding plt.ioff() to the script, since Pythonista documentation does warn that matplotlib GUIs will not implement interactive behavior, but it still does not produce the plot. I am able to produce the expected plot using plt.plot(1, 1, 'ro'). The <a href="http://omz-software.com/pythonista/docs/matplotlib/faq/usage_faq.html"> Pythonista mirror of matplotlib's documentation </a> seems to suggest I can use the OO style to code with matplotlib.

      Is it possible to use the OO interface to matplotlib with Pythonista? If so, how?

      1 Reply Last reply Reply Quote 0
      • omz
        omz last edited by

        Thanks for the feedback. You can work around this limitation by saving the plot to an image first, and showing that (the non-OO show() does pretty much the same internally):

        import matplotlib.pyplot as plt
        import Image
        
        fig, ax = plt.subplots(1, 1)
        ax.plot(1, 1, 'ro')
        
        fig.savefig('mpl_out.png')
        Image.open('mpl_out.png').show()
        
        1 Reply Last reply Reply Quote 0
        • First post
          Last post
        Powered by NodeBB Forums | Contributors