python中利用规范化数据绘制直方图改变x轴刻度

利用规范化数据绘制直方图
在这里插入图片描述
代码如下:

import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family'] = 'Microsoft YaHei'

interval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]

fig = plt.figure(figsize=(16,9),dpi=72)
ax1 = fig.add_subplot()
ax1.bar([x+0.5 for x in range(len(interval))], quantity, width=1)
ax1.set_xticks([x for x in range(len(interval))])
ax1.set_xticklabels(interval)
plt.show()

在这里插入图片描述

对x轴刻度标签进行调整

import matplotlib.pyplot as plt
fig=plt.figure(figsize=(16,9),dpi=80)
ax1=fig.add_subplot()
interval = [0,5,10,15,20,25,30,35,40,45,60,90]
width = [5,5,5,5,5,5,5,5,5,15,30,60]
quantity = [836,2737,3723,3926,3596,1438,3273,642,824,613,215,47]
ax1.bar([width[i]/2+x for i ,x in enumerate(interval)],quantity,width=width)
ax1.set_xticks([i for i in interval+[150]])
plt.show()

在这里插入图片描述

### Matplotlib 中 `plt.hist` 函数的参数详解 Matplotlib 提供了强大的绘图工具,其中 `plt.hist` 是用于绘制直方图的核心函数之一。以下是该函数的主要参数及其作用说明: #### 1. **基本参数** - **x**: 输入数据,通常是数值型的一维数组或序列。这是要被分组统计的数据源。 - **bins**: 定义直方图中箱子的数量或者具体的边界值列表,默认情况下为 10[^3]。 - **range**: 设置数据范围 `(min, max)`,超出此区间的值会被忽略。如果未提供,则默认取输入数据的最大最小值作为区间[^3]。 #### 2. **规范化选项** - **density** 或者已废弃的 **normed**: 如果设为 `True`,则返回的概率密度代替原始计数,即高度等于频率除以箱宽 \( \text{height} = \frac{\text{n}}{\text{(len(x))}\times\Delta\text{bin}}\) ,使得总面积积分为 1[^4]^。 ```python import numpy as np import matplotlib.pyplot as plt data = np.random.randn(1000) count, bins, ignored = plt.hist(data, bins=30, density=True) plt.show() ``` #### 3. **样式控制** - **histtype**: 指定直方图类型,可选 `'bar'`, `'barstacked'`, `'step'`, `'stepfilled'` 默认为 `'bar'`[^3]。 - **align**: 控制柱体对齐方式,支持 `'left'`, `'mid'`, 和 `'right'`。 - **orientation**: 设定直方图为水平 (`horizontal`) 或垂直 (`vertical`) 显示。 - **rwidth**: 当 `histtype='bar'` 或 `'barstacked'` 时有效,表示矩形宽度相对于 bin 的比例。 #### 4. **颜色与透明度** - **color**: 设置填充颜色[^3]。 - **alpha**: 整透明程度,取值介于 0 到 1 之间。 #### 5. **叠加与其他特性** - **cumulative**: 若置为 `True`,累积分布函数 (CDF) 替代常规直方图显示。 - **log**: 是否采用对数刻度来呈现纵坐标[^3]。 - **label**: 添加标签以便配合 legend 使用。 通过以上这些灵活配置项,用户可以根据需求定制化自己的直方图表现形式。 --- ### 示例代码演示 下面给出一段综合运用多个参数的例子: ```python import numpy as np import matplotlib.pyplot as plt # 创建随机样本数据 np.random.seed(0) sample_data = np.random.normal(loc=0.0, scale=1.0, size=1000) # 绘制带正态拟合曲线的直方图 num_bins = 50 counts, edges, patches = plt.hist( sample_data, bins=num_bins, density=True, histtype='bar', color='skyblue', edgecolor='black', alpha=0.7, label='Sample Data' ) # 计算理论正态分布PDF y_theory = ((1 / (np.sqrt(2 * np.pi))) * np.exp(-0.5 * (edges)**2)) # 添加最佳匹配线 plt.plot(edges, y_theory, '--r', linewidth=2, label='Normal PDF') # 自定义图表细节 plt.xlabel('Value') plt.ylabel('Frequency/Density') plt.title('Histogram with Normal Fit Curve') plt.legend() # 展示最终效果 plt.tight_layout() plt.show() ``` --- ### 结论 综上所述,`plt.hist` 不仅简单易用而且功能强大,适合多种数据分析场合下的可视化需求。合理选用其众多可用参数可以帮助我们更清晰直观地理解数据特征。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值