[英]how to plot multiple pie chart in a single page?
我有一本包含 63 个项目的字典。 我可以制作 63 饼图吗? 或历史图表?
对于字典items
的单个项目Normalize_title
我有以下代码:
fig, ax = plt.subplots()
ax.pie(items[Normalize_title]['y'], labels=items[Normalize_title]['x'], autopct='%1.1f%%')
ax.axis('equal')
ax.set_title(Normalize_title)
y_pos = range(len(list(items[Normalize_title]['x'])))
# plt.xticks(y_pos, list(v.keys()), rotation=90)
plt.show()
但我想在项目上使用 for 循环并同时绘制所有内容:像这样:
for title in titles_list:
ax.pie(items[title][y], labels=items[title]['x'])
您可以创建一个子图网格并将一个饼图放入每个子图中。
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams['font.size'] = 8
items = dict()
for _ in range(63):
items["".join(np.random.choice([*'abcdefghij'], 7))] = {'y': np.random.randint(10, 20, 4), 'x': [*'ABCD']}
fig, axes = plt.subplots(nrows=7, ncols=9, figsize=(10, 12))
colors = plt.cm.Set3.colors
for ax, Normalize_title in zip(axes.ravel(), items.keys()):
ax.pie(items[Normalize_title]['y'], labels=items[Normalize_title]['x'], autopct='%1.1f%%',
colors=colors, labeldistance=1.15)
ax.set_title(Normalize_title)
ax.axis('equal')
ax.axis('off')
plt.tight_layout()
plt.show()
您可能想要根据您的数据更改填充、文本大小、colors 等。
您可以通过ncols
创建nrows
的子图网格,然后 map 将线性index
放入row
和col
:
nrows, ncols = 11, 6
fig, axes = plt.subplots(nrows=nrows, ncols=ncols, figsize=(ncols*2, nrows*2))
for index, key in enumerate(items.keys()):
row = index // ncols
col = index % ncols
ax = axes[row, col]
ax.pie(items[key]['y'], labels=items[key]['x'])
ax.set_title(key)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.