ENH: support pie plot in series and dataframe plot
State: closed

Related to #413, added pie plot for `Series.plot` and `DataFrame.plot` kind.

If data includes `NaN`, it will be automatically filled by 0. If data contains negative value, `ValueError` will be raised.

```
import pandas as pd
import numpy as np
series = pd.Series(3 * np.random.rand(4), index=['a', 'b', 'c', 'd'], name='series')
series.plot(kind='pie')
```

![series_pie_plot](https://cloud.githubusercontent.com/assets/1696302/2810158/526e4f82-cda1-11e3-95b3-422d8e5b18ef.png)
### Plotting with DataFrame

Pie plot with `DataFrame` requires either to specify target column by `y` argument or `subplots=True`. When `y` is specified, pie plot of selected column will be drawn. If `subplots=True` is specified, pie plots for each columns are drawn as subplots. Legend will be drawn in each pie plots by default, specify `legend=False` to hide it.

```
df = pd.DataFrame(3 * np.random.rand(4, 2), index=['a', 'b', 'c', 'd'], columns=['x', 'y'])
df.plot(kind='pie', subplots=True) 
```

![df_pie_plot](https://cloud.githubusercontent.com/assets/1696302/2810159/5691fc76-cda1-11e3-9532-43a7ebafc3e5.png)
### Plotting with Options

You can use `labels` and `colors` keywords to specify labels and colors of each wedges (Cannot use `label` and `color`, because of matplotlib's specification). If you want to hide wedge labels, specify `labels=None`.  If `fontsize` is specified, the value will be applied to wedge labels. Also, other keywords supported by `matplotlib.pyplot.pie` can be used.

```
series.plot(kind='pie', labels=['AA', 'BB', 'CC', 'DD'], colors=['r', 'g', 'b', 'c'],
               autopct='%.2f', fontsize=20)
```

![series_pie_plot_options](https://cloud.githubusercontent.com/assets/1696302/2810160/5b5d8f72-cda1-11e3-87b0-de164b887c75.png)


Labels:
name: Visualization
description: plotting

Comments:
@TomAugspurger I think it makes sense to make an additional sectin in plotting.rst to have basic/additional plots/advanced plots? (additional section is getting kind of long)?

@sinhrks pls rebase (actually you might need to do most of your PR's as I merged one of them)

@sinhrks For clarity: I am right the  `labels` and `colors` keywords are keywords of the matplotlib's `pie` function, that are just passed to `pie`? (because otherwise I wouldn't be that fond of adding further new keywords to the already overlaoded pandas `plot` method)

Yep, `labels` and `colors` are derived from `matplotlib.pyplot.pie`. Also, I've modified the doc to link matplotlib.org.

@jreback I'll reorganize plotting.rst before .14

gr8 thanks

@sinhrks @TomAugspurger 

Thanks @sinhrks. I retriggered the Travis build.

It's not great that we need to use `colors` instead of `color` here, but I agree that going with matplotlib's naming and documentation is the best way.

A nice feature would be to specify the layout if using subplots. But that can wait for another PR.

This should merge cleanly once the Travis is done.

One more thing (not specific to this PR). Should we warn if a user passes an argument that we ignore in `_args_adjust`? Right now we just silently ignore it (I think).

@TomAugspurger Yes, it is better. Is it OK to show warnings only when explicitly change any options which collapses plot?

I mean, there are some options not used / not supported in Pie, such as `secondary_y` etc. 

I'm not sure what you mean by collapsing the plot. Do you mean like: `s.pie(secondary_y=True)`? I agree with what I think you're saying about only warning if a user explicitly changes from a default, and that change is ignored. But let's open a separate issue for this. The pie plot PR is good to go. Thanks.

New issue for the warnings: https://github.com/pydata/pandas/issues/7045