如何按行绘制饼图?

how to plot a pie chart row wise?

如果数据是这样的:

one two
123456 98765
456767 45678
123454 87654

那么如何为第 1 行值形成饼图,即值 12345698765in pandas?

我尝试了互联网上给出的代码:

df.T.plot.pie(subplots=True, figsize=(9, 3))

import matplotlib.pyplot as plt

df.Data.plot(kind='pie')

fig = plt.figure(figsize=(6,6), dpi=200)
ax = plt.subplot(111)

df.Data.plot(kind='pie', ax=ax, autopct='%1.1f%%', startangle=270, fontsize=17)

但是这些代码不绘制行值而是给出列结果。

如果你想得到按行的饼图,你可以迭代行并绘制每一行:

In [1]: import matplotlib.pyplot as plt
   ...: import pandas as pd
   ...: import seaborn as sns
   ...:
   ...: sns.set(palette='Paired')
   ...: %matplotlib inline

In [2]: df = pd.DataFrame(columns=['one', 'two'], data=[[123456, 98765],[456767, 45678],[123454, 87654]])

In [3]: df.head()
Out[3]:
      one    two
0  123456  98765
1  456767  45678
2  123454  87654

In [4]: for ind in df.index:
   ...:     fig, ax = plt.subplots(1,1)
   ...:     fig.set_size_inches(5,5)
   ...:     df.iloc[ind].plot(kind='pie', ax=ax, autopct='%1.1f%%')
   ...:     ax.set_ylabel('')
   ...:     ax.set_xlabel('')
   ...:
<matplotlib.figure.Figure at 0x1e8b4205c50>
<matplotlib.figure.Figure at 0x1e8b41f56d8>
<matplotlib.figure.Figure at 0x1e8b4437438>

编辑:

要仅绘制特定行,您可以使用 .iloc 选择要绘制的行(例如,第 0 行)。

fig, ax = plt.subplots(1,1)
fig.set_size_inches(5,5)
df.iloc[0].plot(kind='pie', ax=ax, autopct='%1.1f%%')
ax.set_ylabel('')
ax.set_xlabel('')

参见 Indexing and Selecting Data

上的文档