在 Matplotlib 的单行多列上创建饼图

Creating a Pie Chart on a single row but Multiple Columns in Matplotlib

问题

我的数据框第 751 行有累计总数

我想在第 751 行创建一个包含数字和 % 的饼图

这是我的代码

import matplotlib.pyplot as plt
%matplotlib notebook
data = pd.read_csv('cleaned_df.csv')

在我的 .csv 文件中有以下列

A,B,C,D,E,F

Rows under Columns(Letters) Rows( Numbers )
A= 123456
B= 234567
C= 345678
D= 456789
E= 56789
F= 123454

假设我想创建一个仅包含 B 列和 D 列和 F 列以及最后一行数字(即第 6 行 (678994))的饼图聊天

我该怎么做?

可能的解决方案如下:

import matplotlib.pyplot as plt
import pandas as pd

# set test data and create dataframe
data = {"Date": ["01/01/2022", "01/02/2022", "01/03/2022", "01/04/2022", ], "Male": [1, 2, 3, 6], "Female": [2, 2, 3, 7], "Unknown": [3, 2, 4, 9]}
df = pd.DataFrame(data)

Returns(其中 3 是图表的目标行)

# set target row index, use 751 in your case
target_row_index = 3

# make the pie circular by setting the aspect ratio to 1
plt.figure(figsize=plt.figaspect(1))

# specify data for chart
values = df.iloc[target_row_index, 1:]
labels = df.columns[1:]

# define function to format values on chart
def make_autopct(values):
    def my_autopct(pct):
        total = sum(values)
        val = int(round(pct*total/100.0))
        return '{p:.2f}%  ({v:d})'.format(p=pct,v=val)
    return my_autopct

plt.pie(values, labels=labels, autopct=make_autopct(values))
plt.show()

演出