Scatter requires x column to be numeric · Issue #18755 · pandas-dev/pandas (original) (raw)

In [30]: df = pd.DataFrame(dict(a=['A', 'B', 'C'], b=[2, 3, 4]))

In [31]: plt.scatter(df['a'], df['b']) Out[31]: <matplotlib.collections.PathCollection at 0x7f17e17b41d0>

In [32]: df.plot.scatter(x='a', y='b')

ValueError Traceback (most recent call last) /data/documents/uni/phd/projects/FluxnetTrafficLights/scripts/plots/predictability_plots.py in ()
----> 1 df.plot.scatter(x='a', y='b')

~/miniconda3/envs/science/lib/python3.6/site-packages/pandas/plotting/_core.py in scatter(self, x, y, s, c, **kwds)
2803 axes : matplotlib.AxesSubplot or np.array of them 2804 """ -> 2805 return self(kind='scatter', x=x, y=y, c=c, s=s, **kwds) 2806 2807 def hexbin(self, x, y, C=None, reduce_C_function=None, gridsize=None,

~/miniconda3/envs/science/lib/python3.6/site-packages/pandas/plotting/_core.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)
2625 fontsize=fontsize, colormap=colormap, table=table, 2626 yerr=yerr, xerr=xerr, secondary_y=secondary_y, -> 2627 sort_columns=sort_columns, **kwds) 2628 call.doc = plot_frame.doc 2629

~/miniconda3/envs/science/lib/python3.6/site-packages/pandas/plotting/_core.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)
1867 yerr=yerr, xerr=xerr, 1868 secondary_y=secondary_y, sort_columns=sort_columns, -> 1869 **kwds) 1870 1871

~/miniconda3/envs/science/lib/python3.6/site-packages/pandas/plotting/_core.py in _plot(data, x, y, subplots, ax, kind, **kwds) 1650 if isinstance(data, DataFrame): 1651 plot_obj = klass(data, x=x, y=y, subplots=subplots, ax=ax, -> 1652 kind=kind, **kwds) 1653 else: 1654 raise ValueError("plot kind %r can only be used for data frames"

~/miniconda3/envs/science/lib/python3.6/site-packages/pandas/plotting/_core.py in init(self, data, x, y, s, c, **kwargs) 808 # the handling of this argument later 809 s = 20 --> 810 super(ScatterPlot, self).init(data, x, y, s=s, **kwargs) 811 if is_integer(c) and not self.data.columns.holds_integer(): 812 c = self.data.columns[c]

~/miniconda3/envs/science/lib/python3.6/site-packages/pandas/plotting/_core.py in init(self, data, x, y, **kwargs) 783 y = self.data.columns[y] 784 if len(self.data[x]._get_numeric_data()) == 0: --> 785 raise ValueError(self._kind + ' requires x column to be numeric') 786 if len(self.data[y]._get_numeric_data()) == 0: 787 raise ValueError(self._kind + ' requires y column to be numeric')

ValueError: scatter requires x column to be numeric

matplotlib                2.1.0            py36hba5de38_0  
pandas                    0.20.3                   py36_0  
python                    3.6.3                h0ef2715_3