如何用二维 Numpy 数组创建动态饼图?
How to create a dynamic piechart out of two dimensional Numpy array?
Python2.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
预期结果将是这两列中的一个简单饼图。它应该根据指标值和行数动态创建。
期待您的回复。
我真的建议将此数据存储为字典或 pandas 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())
这给了我以下情节:
Python2.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
预期结果将是这两列中的一个简单饼图。它应该根据指标值和行数动态创建。
期待您的回复。
我真的建议将此数据存储为字典或 pandas 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())
这给了我以下情节: