python环形图添加标签怎么写上标签加百分比
时间: 2023-10-07 16:09:05 浏览: 93
你可以使用 matplotlib 库来绘制环形图,并使用 autopct 参数添加标签和百分比。下面是一个示例代码:
```python
import matplotlib.pyplot as plt
# 数据
sizes = [15, 30, 45, 10]
labels = ['A', 'B', 'C', 'D']
# 环形图
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90, counterclock=False, wedgeprops={'width': 0.4})
ax.axis('equal') # 防止图形变形
# 添加标题
ax.set_title('My Donut Plot')
plt.show()
```
解释一下这段代码:
- `sizes` 是环形图中每个部分的大小。
- `labels` 是每个部分的标签。
- `ax.pie()` 函数绘制环形图。`autopct='%1.1f%%'` 参数将百分比显示为文本标签。`startangle=90` 参数设置饼图起始角度为 90 度(即从上面开始画)。`counterclock=False` 参数设置饼图顺时针旋转。
- `ax.axis('equal')` 使 x 和 y 轴的比例相等,防止图形变形。
- `ax.set_title()` 添加标题。
你可以根据自己的数据和需要进行修改。
相关问题
matplotlib 画环形图 百分比标签的参数
在使用Matplotlib绘制环形图时,可以使用pie()函数绘制。要添加百分比标签,可以使用autopct参数。该参数用于控制百分比标签的格式。
具体来说,autopct参数可以接受一个字符串格式的参数,其中可以包含一些占位符,用于格式化百分比数值。常用的占位符包括:
1. "%.1f%%":保留一位小数的百分比,例如"25.0%"
2. "%.2f%%":保留两位小数的百分比,例如"25.00%"
3. "%.0f%%":不保留小数的百分比,例如"25%"
在使用autopct参数时,可以根据实际需要选择合适的格式。以下是一个简单的示例代码,展示了如何使用autopct参数创建一个带有百分比标签的环形图:
```python
import matplotlib.pyplot as plt
# 数据
sizes = [40, 30, 20, 10]
labels = ['A', 'B', 'C', 'D']
# 绘图
plt.pie(sizes, labels=labels, autopct='%.1f%%')
# 布局
plt.axis('equal')
# 显示图形
plt.show()
```
在上述示例中,autopct='%.1f%%'表示保留一位小数的百分比标签。根据实际数据和需求,可以自行调整autopct参数的值,以获得相应的百分比标签形式。
python实现环形图
在Python中,我们可以使用第三方库如`networkx`和`matplotlib`或`plotly`来创建环形图,也称为饼图或环形统计图。环形图用于展示部分与整体之间的关系,其中每个扇区代表一个类别,而整个圆表示总数。
以下是使用`networkx`和`matplotlib`创建环形图的基本步骤:
```python
import networkx as nx
import matplotlib.pyplot as plt
# 创建一个环形图数据
node_labels = ['A', 'B', 'C', 'D', 'E']
sizes = [30, 40, 20, 10, 5] # 扇区大小,总和应为100
# 使用networkx创建环形图
G = nx.Graph()
G.add_nodes_from(node_labels)
G.add_edges_from([(node_labels[i], node_labels[(i + 1) % len(node_labels)]) for i in range(len(node_labels))])
# 计算环形图的总和
total = sum(sizes)
# 创建环形图
fig, ax = plt.subplots()
pos = nx.circular_layout(G)
nx.draw_networkx_nodes(G, pos, node_color='lightblue', node_size=sizes, alpha=0.8)
nx.draw_networkx_edges(G, pos, width=1.0, alpha=0.5)
nx.draw_networkx_labels(G, pos, labels={node: node for node in node_labels}, font_weight='bold')
# 添加百分比标签
for node, size in zip(G.nodes(), sizes):
ax.annotate(f"{size/total*100:.1f}%", (pos[node], pos[node]), ha='center', va='center', fontsize=12)
plt.axis('equal') # 保持圆形
plt.title('环形图示例')
plt.show()
```
阅读全文