用matplotlib,画一个有有两组七个数据的饼图
时间: 2024-01-22 20:19:07 浏览: 66
好的,以下是一个简单的例子。
```python
import matplotlib.pyplot as plt
data1 = [20, 15, 10, 5, 5, 3, 2]
data2 = [10, 20, 5, 10, 10, 3, 2]
labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
fig, (ax1, ax2) = plt.subplots(1, 2)
ax1.pie(data1, labels=labels)
ax1.set_title('Data 1')
ax2.pie(data2, labels=labels)
ax2.set_title('Data 2')
plt.show()
```
这个例子创建了两个包含七个数据的列表`data1`和`data2`,然后创建了一个包含标签的列表`labels`。然后使用`plt.subplots()`函数创建了一个带有两个子图的画布,并且使用`ax1.pie()`和`ax2.pie()`函数在两个子图上分别绘制了饼图。最后使用`plt.show()`显示了这个图形。
相关问题
matplotlib饼图标注数据
在matplotlib库中创建饼图并添加数据标签通常涉及到`pie`函数和`text`函数的结合使用。下面是一个基本的例子:
```python
import matplotlib.pyplot as plt
# 假设我们有一些数据
labels = ['Label A', 'Label B', 'Label C', 'Label D']
sizes = [30, 45, 15, 10] # 数据对应的百分比
fig, ax = plt.subplots()
# 创建饼图
ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90, radius=1) # autopct用于显示每个扇区的百分比
# 添加数据标签
for i, wedge in enumerate(ax.patches):
center, width, height = wedge.get_width(), wedge.get_height(), wedge.get_theta1() - wedge.get_theta0()
x, y = center + width / 2, height / 2 # 获取中心点坐标
ax.text(x, y, sizes[i], ha='center', va='center', rotation=wedge.theta1 * 180 / pi) # 根据角度旋转文本
plt.show()
```
在这个例子中,`autopct='%1.1f%%'`会让每个扇形旁边显示百分比,`startangle=90`设置从顶部开始计数,`rotation`根据扇形的角度调整文本的位置。
用matplotlib,画一个双层饼图
好的,以下是一个简单的例子:
```python
import matplotlib.pyplot as plt
# 数据
sizes_outer = [30, 70]
sizes_inner = [20, 40, 10, 30]
# 颜色
colors_outer = ['red', 'lightgrey']
colors_inner = ['blue', 'green', 'yellow', 'purple']
# 标签
labels_outer = ['Group A', 'Group B']
labels_inner = ['Category 1', 'Category 2', 'Category 3', 'Category 4']
# 创建子图
fig, ax = plt.subplots()
# 添加外层饼图
wedges_outer, _ = ax.pie(sizes_outer, wedgeprops=dict(width=0.5), startangle=-40, colors=colors_outer)
# 添加内层饼图
wedges_inner, _ = ax.pie(sizes_inner, wedgeprops=dict(width=0.5), startangle=-90, colors=colors_inner, radius=0.7)
# 添加标签
ax.legend(wedges_outer, labels_outer, loc="center", bbox_to_anchor=(0.5, -0.15))
ax.legend(wedges_inner, labels_inner, loc="center right", bbox_to_anchor=(1, 0, 0.3, 1))
# 设置标题
ax.set_title("Double-layer Pie Chart")
# 显示图形
plt.show()
```
该例子会输出一个双层饼图,其中外层饼图有两个扇形(30% 和 70%),内层饼图有四个扇形(20%、40%、10% 和 30%)。外层饼图和内层饼图的颜色和标签都是不同的。如下图所示:
![image.png](attachment:image.png)
阅读全文