Python 2.7
需要从Numpy数组中创建饼图的帮助。 目前,我尝试的每种方法都不会显示任何图表。
Numpy数组如下所示。
array([['A' '506']
['B' '80']
['C' '6']
['...' '15']
['Z' '7']],dtype = '|S21')
在行数处,列值将更改。 列数和种类将保持不变。
我试图:
将数组转换为Pandas数据集,应用适当的类型并创建如下的plt.pie。没有显示图表。
dataset = pd.DataFrame(**array**, columns = ['Description','Metric'])
dataset[['Metric']] = dataset[['Metric']].apply(pd.to_numeric)
colors = ["#...", '#...', '#...','#...', '#...', '#...', '#...', '#...', '#...', '#...', '#...']
plt.pie(
x = dataset['Metric'],
labels=dataset['Description'],
shadow=False,
colors=colors,
autopct='%1.1f%%',
)
plt.axis('equal')
plt.tight_layout()
plt.show
将其更改为列表,将元素添加为列表。没有显示图表。
metrics = list(dataset['Metric'])
descriptions = list(dataset['Description'])
plt.pie(
x = metrics,
labels=descriptions,
... )
数据集本身看起来不错,但由于无法创建绘图,因此数据框格式似乎存在一些问题...
>> print dataset
<<
Description Metric
0 A 506
1 B 80
2 C 6
3 D 15
...
8 X 26
9 Y 13
10 Z 7
预期结果将是这两列中的简单饼图。应该根据Metrics值和行数来动态创建它。
期待您的回复。
答案 0 :(得分:0)
我真的建议将此数据存储为字典或大熊猫DataFrame
。在下面的解决方案中,我在绘制之前将您的数据转换为字典。
import numpy as np
import matplotlib.pyplot as plt
# Data as given
data = np.array([['A', '506'],
['B', '80'],
['C', '6'],
['...', '15'],
['Z', '7']], dtype = '|S21')
# Create dictionary
data_dict = {}
# Convert byte string to string and string number to int
for row in range(data.shape[0]):
data_dict[data[row, 0].astype(str)] = int(data[row, 1])
plt.pie(data_dict.values(), labels=data_dict.keys())
这给了我以下情节: