Skip to content

DataFrame.plot.scatter() raises a TypeError when plotting bubble plots #12466

Closed
@frankzhewang

Description

@frankzhewang

Issue

The following code will raise a TypeError exception:

from pandas import DataFrame
import numpy as np

df = DataFrame(np.random.randn(5,2), columns=['x', 'y'])
df['s'] = np.random.random_integers(low=100, high=200, size=5)
df.plot.scatter(x='x', y='y', s='s')

However, there's no problem in using matplotlib directly:

from pandas import DataFrame
import numpy as np
import matplotlib.pyplot as plt

df = DataFrame(np.random.randn(5,2), columns=['x', 'y'])
df['s'] = np.random.random_integers(low=100, high=200, size=5)
plt.scatter(x=df['x'], y=df['y'], s=df['s'])

Note: This issue only arises when argument s is used. The ordinary x-y scatter plot works fine.

Traceback details

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-28-a2c96d4293aa> in <module>()
      4 df = DataFrame(np.random.randn(5,2), columns=['x', 'y'])
      5 df['s'] = np.random.random_integers(low=100, high=200, size=5)
----> 6 df.plot.scatter(x='x', y='y', s='s')

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/pandas/tools/plotting.py in scatter(self, x, y, s, c, **kwds)
   3847         axes : matplotlib.AxesSubplot or np.array of them
   3848         """
-> 3849         return self(kind='scatter', x=x, y=y, c=c, s=s, **kwds)
   3850 
   3851     def hexbin(self, x, y, C=None, reduce_C_function=None, gridsize=None,

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/pandas/tools/plotting.py in __call__(self, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   3669                           fontsize=fontsize, colormap=colormap, table=table,
   3670                           yerr=yerr, xerr=xerr, secondary_y=secondary_y,
-> 3671                           sort_columns=sort_columns, **kwds)
   3672     __call__.__doc__ = plot_frame.__doc__
   3673 

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/pandas/tools/plotting.py in plot_frame(data, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   2554                  yerr=yerr, xerr=xerr,
   2555                  secondary_y=secondary_y, sort_columns=sort_columns,
-> 2556                  **kwds)
   2557 
   2558 

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/pandas/tools/plotting.py in _plot(data, x, y, subplots, ax, kind, **kwds)
   2382         plot_obj = klass(data, subplots=subplots, ax=ax, kind=kind, **kwds)
   2383 
-> 2384     plot_obj.generate()
   2385     plot_obj.draw()
   2386     return plot_obj.result

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/pandas/tools/plotting.py in generate(self)
    985         self._compute_plot_data()
    986         self._setup_subplots()
--> 987         self._make_plot()
    988         self._add_table()
    989         self._make_legend()

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/pandas/tools/plotting.py in _make_plot(self)
   1557             label = None
   1558         scatter = ax.scatter(data[x].values, data[y].values, c=c_values,
-> 1559                              label=label, cmap=cmap, **self.kwds)
   1560         if cb:
   1561             img = ax.collections[0]

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/matplotlib/__init__.py in inner(ax, *args, **kwargs)
   1810                     warnings.warn(msg % (label_namer, func.__name__),
   1811                                   RuntimeWarning, stacklevel=2)
-> 1812             return func(ax, *args, **kwargs)
   1813         pre_doc = inner.__doc__
   1814         if pre_doc is None:

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/matplotlib/axes/_axes.py in scatter(self, x, y, s, c, marker, cmap, norm, vmin, vmax, alpha, linewidths, verts, edgecolors, **kwargs)
   3891                 offsets=offsets,
   3892                 transOffset=kwargs.pop('transform', self.transData),
-> 3893                 alpha=alpha
   3894                 )
   3895         collection.set_transform(mtransforms.IdentityTransform())

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/matplotlib/collections.py in __init__(self, paths, sizes, **kwargs)
    831         Collection.__init__(self, **kwargs)
    832         self.set_paths(paths)
--> 833         self.set_sizes(sizes)
    834         self.stale = True
    835 

/Users/fzw/anaconda/envs/ds/lib/python3.5/site-packages/matplotlib/collections.py in set_sizes(self, sizes, dpi)
    804             self._sizes = np.asarray(sizes)
    805             self._transforms = np.zeros((len(self._sizes), 3, 3))
--> 806             scale = np.sqrt(self._sizes) * dpi / 72.0 * self._factor
    807             self._transforms[:, 0, 0] = scale
    808             self._transforms[:, 1, 1] = scale

TypeError: ufunc 'sqrt' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

output of pd.show_versions()

INSTALLED VERSIONS
------------------
commit: None
python: 3.5.1.final.0
python-bits: 64
OS: Darwin
OS-release: 13.4.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.17.1
nose: None
pip: 8.0.1
setuptools: 19.4
Cython: None
numpy: 1.10.2
scipy: 0.16.1
statsmodels: None
IPython: 4.0.3
sphinx: None
patsy: None
dateutil: 2.4.2
pytz: 2015.7
blosc: None
bottleneck: None
tables: None
numexpr: None
matplotlib: 1.5.1
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: None
pymysql: None
psycopg2: None
Jinja2: 2.8

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions