plt.hist(bins)
时间: 2025-01-02 15:34:21 浏览: 8
### 使用 `bins` 参数绘制直方图
在 Matplotlib 的 `plt.hist()` 函数中,`bins` 参数用于指定直方图中的柱状数量或边界。这可以是一个整数表示柱子的数量,也可以是一个序列来定义具体的边界。
#### 整数值作为 `bins`
当提供一个整数给 `bins` 参数时,该函数将会创建相应数量的等宽区间:
```python
import numpy as np
import matplotlib.pyplot as plt
data = np.random.randn(1000)
# 创建具有 20 个区间的直方图
n, bins, patches = plt.hist(data, bins=20)
plt.title('Histogram with Bins Set to Integer Value')
plt.show()
```
#### 序列值作为 `bins`
如果希望自定义每个柱的位置,则可以通过传递一个数组到 `bins` 来实现这一点。这个数组应该包含所有的左边缘以及右边缘的最大值:
```python
custom_bins = [-3,-2,-1,0,1,2,3]
n, custom_bin_edges, patches = plt.hist(data, bins=custom_bins)
plt.title('Custom Bin Edges Histogram')
plt.show()
```
#### 动态计算 `bins`
有时可能不知道最佳的 bin 数目是多少,在这种情况下可以选择基于数据动态决定 bin 宽度的方法之一,比如 Sturges 或者 Freedman-Diaconis 规则:
```python
from math import ceil
def sturges_rule(data):
"""Calculate number of bins using Sturges' rule."""
n = len(data)
k = int(ceil(log2(n)) + 1)
return k
optimal_num_of_bins = sturges_rule(data)
print(f'Sturges\' Rule suggests {optimal_num_of_bins} bins.')
n, optimal_bins, patches = plt.hist(data, bins=optimal_num_of_bins)
plt.title('Optimized Number of Bins Using Sturges\' Rule')
plt.show()
```
阅读全文