Sympy, plotting geometric objects gives either ImportError: no module named "plot" or AttributeError: object "Circle" has no attribute "is_3D",

Setup : Using Python 3.4.1 from Anaconda 2.1.0 64-bit Installer for Windows 8.1

Using the IPython 2.2.0 console

As usual with the Anaconda installer, I have matplotlib 1.4.0 that comes with it.

And I updated the default sympy on Anaconda to sympy 0.7.6

Problem: I am trying to plot geometric objects as described in the sympy documentation http://docs.sympy.org/latest/modules/plotting.html#plot-geom in at least three ways, all possible errors.

First try using the "older" PygletPlot, the module used in the above reference documentation:

In [1]: from sympy.plotting.pygletplot import PygletPlot as Plot

In [2]: from sympy import Point, Circle

In [3]: c1 = Circle(Point(1, 0), 3)

In [4]: p = Plot(axes='label_axes=True')
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-6-34da7d3c112c> in <module>()
----> 1 p = Plot(axes='label_axes=True')

C:\Anaconda3\lib\site-packages\sympy\plotting\pygletplot\__init__.py in      PygletPlot(*args, **kwargs)
    137         """
    138
--> 139         import plot
    140         return plot.PygletPlot(*args, **kwargs)
    141

ImportError: No module named 'plot'

In [5]: Plot(c1)
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-5-4edba1117b3a> in <module>()
----> 1 Plot(c1)

C:\Anaconda3\lib\site-packages\sympy\plotting\pygletplot\__init__.py in    PygletPlot(*args, **kwargs)
    137         """
    138
--> 139         import plot
    140         return plot.PygletPlot(*args, **kwargs)
    141

ImportError: No module named 'plot'
In [6]: p = Plot()
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-6-f2ff2ed54331> in <module>()
----> 1 p = Plot()

C:\Anaconda3\lib\site-packages\sympy\plotting\pygletplot\__init__.py in      PygletPlot(*args, **kwargs)
    137         """
    138
--> 139         import plot
    140         return plot.PygletPlot(*args, **kwargs)
    141

ImportError: No module named 'plot'

      

Second, try using the "new" build module, which is recommended in answers to most build problems with sympy:

In [1]: from sympy.plotting.plot import Plot

In [2]: from sympy import Point, Circle

In [3]: c1 = Circle(Point(1, 0), 3)

In [4]: p = Plot(c1)

In [5]: p.show()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-709f73884a30> in <module>()
----> 1 p.show()

C:\Anaconda3\lib\site-packages\sympy\plotting\plot.py in show(self)
    182         if hasattr(self, '_backend'):
    183             self._backend.close()
--> 184         self._backend = self.backend(self)
    185         self._backend.show()
    186

C:\Anaconda3\lib\site-packages\sympy\plotting\plot.py in __new__(cls, parent)
   1054         matplotlib = import_module('matplotlib', min_module_version='1.1.0', catch=(RuntimeError,))
   1055         if matplotlib:
-> 1056             return MatplotlibBackend(parent)
   1057         else:
   1058             return TextBackend(parent)

C:\Anaconda3\lib\site-packages\sympy\plotting\plot.py in __init__(self, parent)
    861     def __init__(self, parent):
    862         super(MatplotlibBackend, self).__init__(parent)
--> 863         are_3D = [s.is_3D for s in self.parent._series]
    864         self.matplotlib = import_module('matplotlib',
    865             __import__kwargs={'fromlist': ['pyplot', 'cm', 'collections']},

C:\Anaconda3\lib\site-packages\sympy\plotting\plot.py in <listcomp>(.0)
    861     def __init__(self, parent):
    862         super(MatplotlibBackend, self).__init__(parent)
--> 863         are_3D = [s.is_3D for s in self.parent._series]
    864         self.matplotlib = import_module('matplotlib',
    865             __import__kwargs={'fromlist': ['pyplot', 'cm', 'collections']},

AttributeError: 'Circle' object has no attribute 'is_3D'

In [6]: Plot(c1)
Out[6]: <sympy.plotting.plot.Plot at 0x6f74ac8>

      

Third attempt to use plot () function which sympy documentation recommends for interactive work:

In [1]: from sympy import plot

In [2]: from sympy import Point, Circle

In [3]: c1 = Circle(Point(1, 0), 3)

In [4]: plot(c1)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-685b4d90c5ac> in <module>()
----> 1 plot(c1)

C:\Anaconda3\lib\site-packages\sympy\plotting\plot.py in plot(*args, **kwargs)
   1274     series = []
   1275     plot_expr = check_arguments(args, 1, 1)
-> 1276     series = [LineOver1DRangeSeries(*arg, **kwargs) for arg in plot_expr]
   1277
   1278     plots = Plot(*series, **kwargs)

TypeError: 'NoneType' object is not iterable

      

Thanks for your attention. This is my first time posting a question, so I hope I have provided enough information.

+3


source to share





All Articles