当前位置: 首页 > article >正文

Python学习笔记第六十九天(Matplotlib 直方图)

Python学习笔记第六十九天

  • Matplotlib 直方图
    • 绘制直方图
    • 结合 Pandas绘制直方图
    • Series 对象绘制直方图
  • 后记

Matplotlib 直方图

我们可以使用 pyplot 中的 hist() 方法来绘制直方图。

hist() 方法是 Matplotlib 库中的 pyplot 子库中的一种用于绘制直方图的函数。

hist() 方法可以用于可视化数据的分布情况,例如观察数据的中心趋势、偏态和异常值等。

hist() 方法语法格式如下:

matplotlib.pyplot.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', 
					align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs)

参数说明:

  • x:表示要绘制直方图的数据,可以是一个一维数组或列表。
  • bins:可选参数,表示直方图的箱数。默认为10。
  • range:可选参数,表示直方图的值域范围,可以是一个二元组或列表。默认为None,即使用数据中的最小值和最大值。
  • density:可选参数,表示是否将直方图归一化。默认为False,即直方图的高度为每个箱子内的样本数,而不是频率或概率密度。
  • weights:可选参数,表示每个数据点的权重。默认为None。
  • cumulative:可选参数,表示是否绘制累积分布图。默认为False。
  • bottom:可选参数,表示直方图的起始高度。默认为None。
  • histtype:可选参数,表示直方图的类型,可以是’bar’、‘barstacked’、‘step’、‘stepfilled’等。默认为’bar’。
  • align:可选参数,表示直方图箱子的对齐方式,可以是’left’、‘mid’、‘right’。默认为’mid’。
  • orientation:可选参数,表示直方图的方向,可以是’vertical’、‘horizontal’。默认为’vertical’。
  • rwidth:可选参数,表示每个箱子的宽度。默认为None。
  • log:可选参数,表示是否在y轴上使用对数刻度。默认为False。
  • color:可选参数,表示直方图的颜色。
  • label:可选参数,表示直方图的标签。
  • stacked:可选参数,表示是否堆叠不同的直方图。默认为False。
  • **kwargs:可选参数,表示其他绘图参数。

绘制直方图

以下实例我们简单实用 hist() 来创建一个直方图:

# 实例 1
import matplotlib.pyplot as plt
import numpy as np

# 生成一组随机数据
data = np.random.randn(1000)

# 绘制直方图
plt.hist(data, bins=30, color='skyblue', alpha=0.8)

# 设置图表属性
plt.title('绘制直方图')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 显示图表
plt.show()

以下实例演示了如何使用 hist() 函数绘制多个数据组的直方图,并进行比较:

# 实例 2
import matplotlib.pyplot as plt
import numpy as np

# 生成三组随机数据
data1 = np.random.normal(0, 1, 1000)
data2 = np.random.normal(2, 1, 1000)
data3 = np.random.normal(-2, 1, 1000)

# 绘制直方图
plt.hist(data1, bins=30, alpha=0.5, label='Data 1')
plt.hist(data2, bins=30, alpha=0.5, label='Data 2')
plt.hist(data3, bins=30, alpha=0.5, label='Data 3')

# 设置图表属性
plt.title('绘制多个数据组的直方图')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()

# 显示图表
plt.show()

以上实例中我们生成了三组不同的随机数据,并使用 hist() 函数绘制了它们的直方图。通过设置不同的均值和标准差,我们可以生成具有不同分布特征的随机数据。

我们设置了 bins 参数为 30,这意味着将数据范围分成 30 个等宽的区间,然后统计每个区间内数据的频数。

我们设置了 alpha 参数为 0.5,这意味着每个直方图的颜色透明度为 50%。
我们使用 label 参数设置了每个直方图的标签,以便在图例中显示。

然后使用 legend() 函数显示图例。最后,我们使用 title()、xlabel() 和 ylabel() 函数设置了图表的标题和坐标轴标签。

运行完我们可以清晰地看出这三组数据的分布情况,其中 data1 和 data2 分布接近正态分布,而 data3 分布偏态。

这种比较直方图的方式可以帮助我们分析和比较不同数据组的分布情况。

结合 Pandas绘制直方图

以下实例我们结合 Pandas 来绘制直方图:

# 实例 3
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
# 使用 NumPy 生成随机数
random_data = np.random.normal(170, 10, 250)
 
# 将数据转换为 Pandas DataFrame
dataframe = pd.DataFrame(random_data)
 
# 使用 Pandas hist() 方法绘制直方图
dataframe.hist()


# 设置图表属性
plt.title('结合 Pandas绘制直方图')
plt.xlabel('X-Value')
plt.ylabel('Y-Value')

# 显示图表
plt.show()

Series 对象绘制直方图

除了数据框之外,您还可以使用 Pandas 中的 Series 对象绘制直方图。只需将数据框中的列替换为 Series 对象即可。

实例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 生成随机数据
data = pd.Series(np.random.normal(size=100))

# 绘制直方图
# bins 参数指定了直方图中的柱子数量
plt.hist(data, bins=10)

# 设置图形标题和坐标轴标签
plt.title('Series 对象绘制直方图')
plt.xlabel('X-Values')
plt.ylabel('Y-Values')

# 显示图形
plt.show()

后记

今天学习的是Python Matplotlib 直方图学会了吗。 今天学习内容总结一下:

  1. 绘制直方图
  2. 结合 Pandas
  3. Series 对象绘制直方图

http://www.kler.cn/a/106428.html

相关文章:

  • [系统安全] PE文件知识在免杀中的应用
  • java中volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?
  • Spring整合Redis
  • 【链路层】空口数据包详解(4):数据物理通道协议数据单元(PDU)
  • python的matplotlib实现数据分析绘图
  • 数据结构-二叉树及其遍历
  • threejs(4)-纹理材质高级操作
  • 软件测试面试题
  • 面对6G时代 适合通信专业的 毕业设计题目
  • Unity Shader当用户靠近的时候会出现吃鸡一样的光墙
  • ARM,汇编指令
  • Linux MMC子系统 - 2.eMMC 5.1总线协议浅析
  • 关于前端如何下载后端接口返回content-type为application/octet-stream的文件
  • linux find命令搜索日志内容
  • leetcode_39 组合总和
  • J2EE项目部署与发布(Windows版本)
  • windows 设置nginx、redis、jar包开机自启、mysql自动备份
  • cleanmymacX4.14免费版mac清除浏览器缓存软件
  • Ocelot简易教程目录
  • 大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)
  • 使用Selenium和Java编写爬虫程序
  • Sql Server中的表组织和索引组织(聚集索引结构,非聚集索引结构,堆结构)
  • Python----break关键字对while...else结构的影响
  • 【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》
  • oracle19c配置驱动
  • DoLa:对比层解码提高大型语言模型的事实性