python茎叶图代码
时间: 2024-04-22 19:20:03 浏览: 20
当我们需要展示数据的分布情况时,可以使用茎叶图(stem-and-leaf plot)。Python中可以使用matplotlib库来绘制茎叶图。
下面是一个简单的Python代码示例,用于生成茎叶图:
```python
import matplotlib.pyplot as plt
def stem_leaf_plot(data):
stems = []
leafs = []
# 提取茎和叶
for value in data:
stem = int(value // 10)
leaf = int(value % 10)
stems.append(stem)
leafs.append(leaf)
# 绘制茎叶图
fig, ax = plt.subplots()
ax.stem(stems, leafs, use_line_collection=True)
ax.set_xlabel('Stems')
ax.set_ylabel('Leafs')
ax.set_title('Stem-and-Leaf Plot')
plt.show()
# 示例数据
data = [12, 34, 56, 78, 90, 23,
相关问题
python 茎叶图
茎叶图是一种用于展示数据分布的统计图表,它可以将每个数据点拆分为茎(高位部分)和叶(个位部分),然后在图表上绘制一个垂直线(茎)和水平线(叶),以表示数据的分布。在Python中,可以使用以下代码绘制茎叶图:
```python
# 定义数据
data = [123, 45, 67, 89, 12, 34, 56, 78, 90, 23, 45, 67, 89, 12, 34, 56, 78, 90, 23, 45]
# 将数据拆分为茎和叶
stems = []
leaves = []
for d in data:
stem, leaf = divmod(d, 10)
stems.append(stem)
leaves.append(leaf)
# 绘制茎叶图
for i, stem in enumerate(sorted(set(stems))):
print('{:2d} |'.format(stem), end=' ')
for leaf in sorted(l for s, l in zip(stems, leaves) if s == stem):
print('{:2d}'.format(leaf), end=' ')
print()
```
上述代码中,首先定义了一个数据列表data,然后将每个数据点拆分为茎和叶,并将茎和叶分别存储在列表stems和leaves中。接下来,使用sorted(set(stems))获取所有不重复的茎,并对其进行排序。然后,对于每个茎,使用列表推导式获取所有属于该茎的叶,并对其进行排序。最后,使用print函数将茎叶图输出到控制台。
python画茎叶图完整代码
当然,下面是一个使用Python绘制茎叶图的完整代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建数据
data = [12, 15, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35]
# 提取茎和叶
stem = [int(x / 10) for x in data]
leaf = [x % 10 for x in data]
# 创建茎叶图
fig, ax = plt.subplots()
# 设置茎叶图的样式
ax.set_xlim(-1, max(stem) + 1)
ax.set_ylim(-1, 10)
ax.set_xlabel('Stem')
ax.set_ylabel('Leaf')
ax.set_title('Stem-and-Leaf Plot')
# 绘制茎叶图
for i in range(len(stem)):
ax.text(stem[i], leaf[i], str(leaf[i]), va='center', ha='center', fontsize=8)
ax.plot([stem[i], stem[i]], [0, leaf[i]], 'k--', lw=0.5)
plt.show()
```
这段代码使用了NumPy和Matplotlib库来绘制茎叶图。首先,我们创建了一个包含一组数据的列表。然后,通过除以10和取余数的方式提取出茎和叶的值。接下来,我们创建了一个图形对象和一个坐标轴对象,并设置了茎叶图的样式。最后,使用循环和plot函数绘制了茎叶图。