在 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()
演出
问题
我的数据框第 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()
演出