Python----数据分析(Matplotlib二:绘图一:折线图,条形图,直方图)

ops/2025/3/4 12:38:50/

一、折线图

        折线图是一种常用的数据可视化工具,它主要用于展示随时间或有序类别变化的数据趋势。

python">plt.plot(x, y, fmt, **kwargs)
名称描述
x这个参数是数据点的 x 轴坐标,可以是一个列表或者数组。如果 x 没有被指 定,那么它默认为 range(len(y))。
y这个参数是数据点的 y 轴坐标,同样可以是一个列表或者数组。
fmt这是一个可选的字符串参数,用于定义图形的颜色和样式。它由以下部分 组成:
颜色例如 ‘r’ 代表红色,‘g’ 代表绿色等。
标记例如 ‘o’ 代表圆圈,‘s’ 代表正方形等。
线型例如 ‘-’ 代表实线,‘--’ 代表虚线,‘:’代表点等。
**kwargs这是可选的关键字参数,用于进一步自定义图形的属性。常用的关键 字参数包括:
label图例的标签。
linewidth 或 lw线宽。
color 或 c线的颜色。
marker标记样式,如 ‘o’,‘s’ 等。
markersize 或 ms标记的大小。
markeredgecolor标记边缘的颜色。
markeredgewidth标记边缘的宽度。
markerfacecolor标记内部的颜色。
alpha透明度
字符类型字符类型
-  实线型V下三角型
--虚线型^上三角型
-.虚点线型<左三角型
点型>右三角型
.句号型1下三叉型
_横线2上三叉型
o圆点型3左三叉型
s正方形4右三叉型
p五角型*星型
h六边形1H六边形2
+加号型x乘号型
D菱形d瘦菱形

1.1、正弦图

python">import numpy as np
import matplotlib.pyplot as plt
# 计算曲线上的点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
# 使用Matplotlib绘制点,并添加fmt和kwargs属性
plt.plot(x, y, '-',label='Sine Wave',  # 图例标签linewidth=2,  # 线宽color='blue',  # 线的颜色marker='o',  # 标记样式markersize=5,  # 标记的大小markeredgecolor='black',  # 标记边缘的颜色markeredgewidth=1,  # 标记边缘的宽度markerfacecolor='none',  # 标记内部的颜色alpha=0.5 # 透明度)
# 显示图例
plt.legend()
# 显示图形
plt.show()

1.2、余弦

python">import numpy as np
import matplotlib.pyplot as plt
# 计算曲线上的点的x和y坐标
x = np.arange(0, 3 * np.pi, 0.1)
y = np.cos(x)
# 使用Matplotlib绘制点,并添加fmt和kwargs属性
plt.plot(x, y, '-',label='Sine Wave',  # 图例标签linewidth=2,  # 线宽color='blue',  # 线的颜色marker='o',  # 标记样式markersize=5,  # 标记的大小markeredgecolor='black',  # 标记边缘的颜色markeredgewidth=1,  # 标记边缘的宽度markerfacecolor='none',  # 标记内部的颜色alpha=0.5 # 透明度)
# 显示图例
plt.legend()
# 显示图形
plt.show()

1.3、气温变化图

python">from matplotlib import pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 1.准备数据
data=['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
x = [1,2,3,4,5,6,7]
max_data = [10, 11, 13, 11, 12, 12, 9]
min_data = [1, -2, 2, 5, 3, 2, 0]# 绘制图表
plt.plot(x,max_data,label='最高温度',marker='o',mfc='w',linestyle='--',markeredgecolor='tab:orange')
plt.plot(x,min_data,label='最低温度',marker='*',mfc='w',linestyle=':',markeredgecolor='tab:green')
# 后续设置x轴刻度
plt.xticks(x,data)
# 显示图例
plt.legend()
# 设置网格
plt.grid(axis='y',linestyle='--',alpha=0.5)
# 设置y轴刻度
plt.yticks(range(-2,15,2))
# 设置标题
plt.title('一周温度变化图')

1.4、主要作用和适用场景:

  1. 显示趋势: 折线图非常适合展示数据随时间变化的趋势。通过将数据点连接起来,可以清晰地看到数据的增长、下降或波动趋势,帮助观察者理解数据的发展过程

  2. 突出波动和变化: 折线图可以有效地显示数据的波动和变化。观察者可以通过折线的上下波动来了解数据的不稳定性或周期性变化

  3. 比较多组数据: 如果你想比较多组数据在相同时间或 条件下的变化趋势,折线图是一个有用的工具。通过在同一图表上绘制多条折线,可以清晰地比较它们之间的差异

  4. 突出异常值: 折线图有助于识别数据中的异常值。当有一个数据点与其周围的趋势不一致时,很容易在折线图中看到这种异常

  5. 预测趋势: 基于历史数据的趋势,折线图可以用于预测未来的趋势。这对于业务决策和规划具有重要意义

  6. 显示周期性变化: 如果数据具有周期性的变化,例如季节性变化或周期性事件,折线图可以很好地展示这种周期性

二、条形图

        条形图是一种常见的数据可视化工具,它主要用于比较不同类别之间的数据。

python">matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
名称描述
x条形中心的x坐标。这个参数可以是单个值或者一个列表,表示每个条形的中 心位置。
height条形的高度。这通常是一个数值或者一个列表,表示每个条形的高度。
width条形的宽度,默认为0.8。这可以是单个值,用于所有条形,或者一个列 表,用于指定每个条形的宽度。
bottom条形的起始位置,默认为0。这可以是单个值或者一个列表,用于堆叠 条形图。
align条形的对齐方式,可以是’center’(中心对齐,默认),‘edge’(左对 齐)。
data如果提供了 data参数,则x和height参数可以指定为字符串,这些字符串 将被解释为pandas DataFrame列的名称。
**kwargs其他关键字参数,包括:
color 或facecolor条形的填充颜色。
edgecolor 或linewidth条形边缘的颜色和线宽。
linestyle条形边缘的线型,例如 '-', '--' , '-.', ':'。
alpha条形的透明度,范围从0(完全透明)到1(完全不透明)。
hatch条形的填充图案
picker控制条形是否可以被交互式选择。
log如果设置为True,则条形的高度将以对数尺度表示。
label为条形创建图例时使用的标签

2.1、普通条图

python">import matplotlib.pyplot as pltfig, ax = plt.subplots()fruits = ['苹果', '蓝莓', '草莓', '橘子']
counts = [40, 100, 30, 55]bar_labels = ['青红色', '蓝色', '红色', '橙色']
bar_colors = ['tab:red', 'tab:blue', 'orangered', 'tab:orange']container = ax.bar(fruits, counts, label=bar_labels, color=bar_colors)
ax.bar_label(container)
ax.set_ylabel('水果数量')
ax.set_title('按种类和颜色划分的水果供应')
ax.legend(title='水果颜色')

2.2、横向条图

python">import matplotlib.pyplot as pltfig, ax = plt.subplots()fruits = ['苹果', '蓝莓', '草莓', '橘子']
counts = [40, 100, 30, 55]bar_labels = ['青红色', '蓝色', '红色', '橙色']
bar_colors = ['tab:red', 'tab:blue', 'orangered', 'tab:orange']container = ax.barh(fruits, counts, label=bar_labels, color=bar_colors)ax.bar_label(container)
ax.set_xlabel('水果数量')
ax.set_title('按种类和颜色划分的水果供应')
ax.legend(title='水果颜色')

 

2.3、多组条图

python">import matplotlib.pyplot as pltspecies = ("苹果","蓝莓","橘子")
weight_counts = {"第1季度": [70, 39, 58],"第2季度": [82, 37, 66],
}
width = 0.2
x = range(len(species))
x1 =[i+width for i in x]container = plt.bar(x, weight_counts["第1季度"],color='tab:red',label='第1季度',width=width)
plt.bar_label(container)
container2 = plt.bar(x1, weight_counts["第2季度"],color='tab:blue',label='第2季度',width=width)
plt.bar_label(container2)
plt.xticks([_+width/2 for _ in x], species)
plt.legend(loc=1)

2.4、堆叠条图

python">import matplotlib.pyplot as pltspecies = ("苹果","蓝莓","橘子")
weight_counts = {"第1季度": [70, 39, 58],"第2季度": [82, 37, 66],
}
x = range(len(species))
container = plt.bar(x, weight_counts["第1季度"],color='tab:red',label='第1季度')
plt.bar_label(container,label_type='center')
container2 = plt.bar(x, weight_counts["第2季度"],color='tab:blue',label='第2季度',bottom=weight_counts["第1季度"])
plt.bar_label(container2,label_type='center')
plt.xticks([_+width/2 for _ in x], species)
plt.legend(loc="upper right")

2.5、主要作用和适用场景

  1. 比较类别之间的大小: 条形图适用于展示不同类别的数据量或大小,通过条形的长度直观地比较它们之间的差异

  2. 展示排名和排序: 条形图可以用于显示数据的排名顺序,使观察者能够很容易地识别出最大值、最小值以及中间的排名

  3. 展示分布情况: 当你想了解不同类别在整体中所占的比例或分布情况时,条形图是一种有效的选择。每个条形的长度代表相应类别的数据量,总和即为整体的总量

  4. 呈现时间趋势: 虽然折线图更适合显示时间趋势,但条形图也可用于呈现时间点上的数据,例如某个特定时间内的销售额或收益

  5. 对比多组数据: 类似于折线图,条形图也能用于对比多组数据,但通常是在不同类别上进行比较,而非随时间变化

  6. 突出异常值: 条形图可以突出显示数据的异常值,观察者可以很容易地识别出高于或低于平均水平的类别

三、直方图

        直方图是一种用于展示数据分布情况的图表,主要用于描述数值型数据的频数分布。

python">hist(x: ArrayLike | Sequence[ArrayLike],bins: int | Sequence[float] | str | None = None,range: tuple[float, float] | None = None,density: bool = False,weights: ArrayLike | None = None,cumulative: bool | float = False,bottom: ArrayLike | float | None = None,histtype: Literal["bar", "barstacked", "step", "stepfilled"] = "bar",align: Literal["left", "mid", "right"] = "mid",orientation: Literal["vertical", "horizontal"] = "vertical",rwidth: float | None = None,log: bool = False,color: ColorType | Sequence[ColorType] | None = None,label: str | Sequence[str] | None = None,stacked: bool = False,*,data=None,**kwargs,
)
名称描述
x(n,) 个数组或 (n,) 个数组序列
bins

如果 bins 是整数,则它定义等宽 bin 的数量 在范围内。

如果 bins 是一个序列,则它定义 bin 边缘,包括 第一个 bin 的左边缘和最后一个 bin 的右边缘; 在这种情况下,分箱的间距可能不相等。除最后一个 (最右侧)垃圾桶是半开的。

range分箱的下限和上限范围。下限和上限异常值 被忽略。如果未提供,则 range 为 . 如果 bins 是一个序列,则 Range 不起作用。
density如果 ,draw 并返回一个概率密度:每个 bin 将显示素材箱的原始计数除以 counts 和 bin 宽度 ()、 ,使直方图下的面积积分为 1 ().
weights一个权重数组,其形状与 x 相同。x 中的每个值仅将其关联的权重贡献给 bin 计数 (而不是 1)。如果 density 为 ,则权重为 归一化,以便 Density 在 仍为 1。
cumulative

如果 ,则计算一个直方图,其中每个 bin 给出 该 bin 中的计数加上较小值的所有 bin。最后一个 bin 给出数据点的总数。True

如果 density 也是,则直方图被归一化,例如 最后一个 bin 等于 1。

如果 cumulative 是小于 0 的数字(例如 -1),则方向 的积累被逆转。在这种情况下,

如果 density 也是 ,则对直方图进行归一化,以便第一个 bin 等于 1。

bottom每个 bin 底部的位置,即从 到 如果是标量,则从底部绘制 的移动量相同。如果是一个数组,则每个 bin 独立移动,并且底部长度必须与 数据桶数。如果为 None,则默认为 0
histtype
  • 'bar' 是传统的条形直方图。如果多个数据 给定条形并排排列。

  • 'barstacked' 是一个条形直方图,其中多个 数据彼此堆叠在一起。

  • 'step' 生成一个默认未填充的 lineplot。

  • 'stepfilled' 生成一个默认填充的 lineplot。

align
  • 'left':条形在左侧 bin 边缘居中。

  • 'mid':条形在 bin 边缘之间居中。

  • 'right':条形以右侧 bin 边缘为中心。

orientation如果为 'horizontal',则将用于条形直方图 底部 kwarg 将是左边缘。
rwidth

条形的相对宽度,作为条柱宽度的分数。如果 ,则自动计算宽度。None

如果 histtype 为 'step' 或 'stepfilled',则忽略。

log如果 ,则直方图轴将设置为对数刻度。
color颜色或颜色序列,每个数据集一个。默认 () 使用标准线条颜色序列。
label字符串或字符串序列以匹配多个数据集。酒吧 图表为每个数据集生成多个补丁,但只有第一个 Patch 会得到 标签,这样就可以按预期工作。
stacked如果 ,则多个数据相互堆叠 如果多个数据并排排列,如果 histtype 为 如果 histtype 为 'step' ,则 'bar' 或彼此重叠
data如果给定,则以下参数还接受 string ,即 解释为 if 是 中的键 
**kwargs接受对应于 X 轴上的数据集

3.1、组距和组数

组距:每组数据的分割区域,例如1-5一组5-10一组。我们可以称数据的组距为5

组数:(最大数据-最小数据)/组距 一般会100条数据可分5-12组

3.2、 直方图

python">from matplotlib import pyplot as plt
from random import randintplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedata = [randint(1, 100) for _ in range(100)]plt.hist(data,20,facecolor='tab:orange',edgecolor='white',alpha=0.5)

3.3、主要作用和适用场景

  1. 展示数据分布: 直方图可用于呈现数值型数据的分布情况,帮助观察者了解数据集中在哪个范围内、是否存在偏斜以及分布的形状

  2. 观察数据的集中趋势和离散程度: 通过直方图,你可以直观地看到数据的中心位置(集中趋势)和数据的分散程度(离散程度),从而更好地理解数据的整体特征

  3. 识别异常值: 直方图能够帮助你发现数据集中的异常值,即明显偏离主体的数值,这对于数据清理和异常值处理很有帮助

  4. 判断数据的对称性: 直方图的形状可以显示数据集的对称性或偏斜程度,有助于了解数据是正态分布还是偏斜分布

  5. 比较不同数据集之间的差异: 当你有多个数据集需要比较时,直方图可以清晰地展示它们的分布情况,帮助观察者理解它们之间的差异

  6. 确定数据的分组间隔: 在构建直方图时,选择适当的分组间隔对于准确地反映数据分布至关重要


http://www.ppmy.cn/ops/163041.html

相关文章

【算法】acwing算法基础875. 快速幂

题目 给定 n 组 ai,bi,pi&#xff0c;对于每组数据&#xff0c;求出 ai^bi mod pi 的值。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含三个整数 ai,bi,pi。 输出格式 对于每组数据&#xff0c;输出一个结果&#xff0c;表示 ai^bi mod pi 的值。 每个结果占一…

【软路由】ImmortalWrt 编译指南:从入门到精通

对于喜欢折腾路由器&#xff0c;追求极致性能和定制化的玩家来说&#xff0c;OpenWrt 无疑是一个理想的选择。而在众多 OpenWrt 衍生版本中&#xff0c;ImmortalWrt 以其更活跃的社区、更激进的特性更新和对新硬件的支持而备受关注。 本文将带你深入了解 ImmortalWrt&#xff0…

懒加载能够解决Spring循环依赖吗

懒加载本身并不能直接解决 Spring 循环依赖问题&#xff0c;但它可以在一定程度上缓解或绕过循环依赖带来的问题&#xff0c;下面详细分析&#xff1a; 1. 什么是 Spring 循环依赖 循环依赖指的是两个或多个 Bean 之间相互依赖&#xff0c;形成一个闭环。例如&#xff0c;Bea…

React学习笔记08

一、什么是Redux Redux是React中最常用的集中状态管理工具&#xff0c;类似于Vue中的Pinia&#xff08;Vuex&#xff09;&#xff0c;可以独立于框架运行&#xff0c;作用是通过集中管理的方式管理应用的状态 二、Redux快速体验 手搓一个Redux&#xff1a; 1、定义一个reduc…

JavaWeb后端基础(4)

这一篇就开始是做一个项目了&#xff0c;在项目里学习&#xff0c;我主要记录在学习过程中遇到的问题&#xff0c;以及一些知识点 Restful风格 一种软件架构风格 在REST风格的URL中&#xff0c;通过四种请求方式&#xff0c;来操作数据的增删改查。 GET &#xff1a; 查询 …

附近商户和用户签到

附近商户 当点击美食按钮时&#xff0c;发送请求&#xff1a; http://127.0.0.1:8080/api/shop/of/type?&typeId1&current1&x120.149993&y30.334229 其中&#xff0c;typeId1表示美食类型&#xff0c;current1表示页码为1&#xff0c;x120.149993&y30.33…

element UI => element Plus 差异化整理

注&#xff1a;文章由deepSeek生成&#xff1b; 以下是 Element UI 和 Element Plus 中 有变化的组件属性差异 的详细对比。这些变化主要集中在 Vue 3 的适配、API 优化以及新特性的引入。 1. Button 组件 (el-button) 属性名Element UIElement Plus差异说明iconicon"el-…

跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围

一 查看springboot自带的tomcat版本&#xff1a; 可直接在项目中找到Maven Dependencies中找到tomcat版本 二、查看SpringBoot内置tomcat版本的支持范围 我这边是跟据maven仓库查看的 首先跟据链接打开maven仓库&#xff1a;https://mvnrepository.com/ 然后搜索&#xff1a…