用pythonh画圆环图,要求显示解释线、数值和百分比
时间: 2023-11-27 16:55:38 浏览: 86
你可以使用Python中的matplotlib库来画圆环图。下面是一个简单的例子,其中包含解释线、数值和百分比。
```python
import matplotlib.pyplot as plt
# 数据
sizes = [40, 30, 20, 10]
labels = ['A', 'B', 'C', 'D']
colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99']
# 画图
fig1, ax1 = plt.subplots()
ax1.pie(sizes, colors=colors, labels=labels, autopct='%1.1f%%', startangle=90)
ax1.axis('equal')
# 添加解释线和数值
plt.legend(labels, loc='center')
for i, v in enumerate(sizes):
ax1.text(0, -(i+1)/5, '{}: {} ({:.1f}%)'.format(labels[i], v, v/sum(sizes)*100), color=colors[i])
# 显示图像
plt.show()
```
在这个例子中,我们使用了`pie`函数来画圆环图,并且设置了autopct参数来显示百分比。然后,我们使用`text`函数添加了解释线和数值,并且为每个部分设置了不同的颜色。最后,我们使用`legend`函数添加了图例,并且使用`show`函数显示图像。
相关问题
画圆环图。 要求:半径为1.5,数值显示小数点后两位,文本字体设置为蓝色,从y轴正方向开始绘制。
画圆环图通常是在数据可视化中用于表示部分与整体的关系,通过颜色填充和内外边界来呈现。在Python的matplotlib库中,可以使用`plt.pie()`函数创建这样的图形。下面是一个简单的例子描述如何满足你的要求:
```python
import matplotlib.pyplot as plt
# 设置半径
radius = 1.5
# 数据列表,这里假设我们有三个部分
data = [30, 40, 30] # 可以替换为实际的数据值,总和应为100%
# 创建圆环图
fig, ax = plt.subplots()
ax.pie(data, radius=radius, labels=['部分1', '部分2', '部分3'], autopct='%1.2f%%', pctdistance=0.85,
wedgeprops=dict(width=0.3), textprops={'color': 'blue'})
# 设置百分比格式显示小数点后两位,并从y轴正方向开始
plt.title('圆环图示例')
plt.axis('equal') # 保持圆形,不是扇形
plt.show()
ax1.text为圆环图添加数值和 引导线
在 matplotlib 中,可以使用 `ax.text()` 方法为图表添加文本注释。对于圆环图,可以在每个扇形的中心位置添加相应的数值,并使用引导线将其连接到相应的扇形边缘。
以下是一个简单的示例:
```python
import matplotlib.pyplot as plt
# 数据
sizes = [30, 40, 20, 10]
labels = ['A', 'B', 'C', 'D']
colors = ['red', 'blue', 'green', 'yellow']
# 创建子图
fig, ax = plt.subplots()
# 画圆环图
wedges, _, _ = ax.pie(sizes, colors=colors, autopct='%1.1f%%', startangle=90, counterclock=False, wedgeprops={'width': 0.4})
# 添加数值和引导线
for i, wedge in enumerate(wedges):
# 计算扇形中心的坐标
center = (wedge.center[0], wedge.center[1])
# 计算数值
value = sizes[i]
# 添加数值注释
ax.text(center[0], center[1], str(value), ha='center', va='center', fontweight='bold')
# 计算引导线的终点坐标
x, y = wedge.r * 1.1 * np.cos(np.pi / 2 - wedge.theta2), wedge.r * 1.1 * np.sin(np.pi / 2 - wedge.theta2)
# 添加引导线
ax.annotate(labels[i], xy=(center[0], center[1]), xytext=(center[0]+x, center[1]+y), ha='center', va='center', arrowprops=dict(arrowstyle='-', color='gray'))
# 设置标题
ax.set_title('Pie Chart with Values and Lines')
# 显示图表
plt.show()
```
这个示例将在圆环图的每个扇形中心位置添加相应的数值,并使用引导线将其连接到相应的扇形边缘。`ax.text()` 方法用于添加文本注释,`ax.annotate()` 方法用于添加带箭头的引导线。
阅读全文