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