怎么把hist返回的patches转为数据列表
时间: 2024-09-23 11:15:28 浏览: 27
当你在Python中使用matplotlib库中的`hist`函数绘制直方图并得到一组`Patches`对象时,这些`Patches`代表了每个柱状的图形。如果你想把这些柱状的面积或高度转换成一个数据列表,你可以遍历这些`Patches`,并从它们的属性中提取你需要的信息,如`height`或`get_width`。
下面是一个例子:
```python
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
data = np.random.randn(1000)
# 绘制直方图
fig, ax = plt.subplots()
n, bins, patches = ax.hist(data, bins=10)
# 转换为数据列表
bar_heights = [patch.get_height() for patch in patches]
bin_centers = [(a + b) / 2 for a, b in zip(bins[:-1], bins[1:])]
data_list = list(zip(bin_centers, bar_heights))
# 打印示例
print("Bin Centers and Heights:", data_list)
```
在这个例子中,`bar_heights`就是你想要的数据列表,它包含了每个柱子的高度。
相关问题
plt.hist 画两组数据
好的,下面是一个简单的例子,演示如何使用 `plt.hist()` 函数画两组数据的直方图:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成两组随机数据
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 1000)
# 设置直方图的参数
bins = np.linspace(-5, 5, 50)
alpha = 0.5
# 画出两组数据的直方图
plt.hist(data1, bins=bins, alpha=alpha, label='Data 1')
plt.hist(data2, bins=bins, alpha=alpha, label='Data 2')
# 添加图例和标题
plt.legend()
plt.title('Histogram of Two Datasets')
# 显示图像
plt.show()
```
在这个例子中,我们首先使用 `numpy` 库生成了两组均值分别为 0 和 2 的正态分布随机数据。接着,我们设置了直方图的参数,包括 bins(直方图的分组数)和 alpha(透明度),然后分别画出了两组数据的直方图。最后,我们添加了图例和标题,然后调用 `plt.show()` 函数显示图像。运行代码后,应该会看到如下的直方图:
![histogram_of_two_datasets.png](https://i.loli.net/2021/06/30/JwPZnN5a4MqxfXk.png)
其中,蓝色的直方图表示 Data 1,橙色的直方图表示 Data 2。可以看到,两组数据的分布情况有所不同,这也反映在了它们的直方图上。
Matplotlib.pyplot.hist函数输出多组数据
Matplotlib.pyplot.hist函数可以用来绘制直方图,其中可以输入多组数据。你可以使用以下代码来输出多组数据的直方图:
```python
import matplotlib.pyplot as plt
import numpy as np
# 生成多组数据
data1 = np.random.randn(1000)
data2 = np.random.randn(1000)
# 绘制直方图
plt.hist([data1, data2], bins=20, alpha=0.5, label=['data1', 'data2'])
plt.legend(loc='upper right')
plt.show()
```
其中,`[data1, data2]`表示输入的多组数据,`bins`表示直方图的柱子数量,`alpha`表示柱子的透明度,`label`表示每组数据的标签。
阅读全文