Python----数据分析(Matplotlib二:绘图一:折线图,条形图,直方图)
- 人工智能
- 2025-09-13 04:42:02

一、折线图
折线图是一种常用的数据可视化工具,它主要用于展示随时间或有序类别变化的数据趋势。
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、正弦图 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、余弦 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、气温变化图 from matplotlib import pyplot as plt plt.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、主要作用和适用场景:显示趋势: 折线图非常适合展示数据随时间变化的趋势。通过将数据点连接起来,可以清晰地看到数据的增长、下降或波动趋势,帮助观察者理解数据的发展过程
突出波动和变化: 折线图可以有效地显示数据的波动和变化。观察者可以通过折线的上下波动来了解数据的不稳定性或周期性变化
比较多组数据: 如果你想比较多组数据在相同时间或 条件下的变化趋势,折线图是一个有用的工具。通过在同一图表上绘制多条折线,可以清晰地比较它们之间的差异
突出异常值: 折线图有助于识别数据中的异常值。当有一个数据点与其周围的趋势不一致时,很容易在折线图中看到这种异常
预测趋势: 基于历史数据的趋势,折线图可以用于预测未来的趋势。这对于业务决策和规划具有重要意义
显示周期性变化: 如果数据具有周期性的变化,例如季节性变化或周期性事件,折线图可以很好地展示这种周期性
二、条形图条形图是一种常见的数据可视化工具,它主要用于比较不同类别之间的数据。
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、普通条图 import matplotlib.pyplot as plt fig, 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、横向条图 import matplotlib.pyplot as plt fig, 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、多组条图 import matplotlib.pyplot as plt species = ("苹果","蓝莓","橘子") 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、堆叠条图 import matplotlib.pyplot as plt species = ("苹果","蓝莓","橘子") 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、主要作用和适用场景
比较类别之间的大小: 条形图适用于展示不同类别的数据量或大小,通过条形的长度直观地比较它们之间的差异
展示排名和排序: 条形图可以用于显示数据的排名顺序,使观察者能够很容易地识别出最大值、最小值以及中间的排名
展示分布情况: 当你想了解不同类别在整体中所占的比例或分布情况时,条形图是一种有效的选择。每个条形的长度代表相应类别的数据量,总和即为整体的总量
呈现时间趋势: 虽然折线图更适合显示时间趋势,但条形图也可用于呈现时间点上的数据,例如某个特定时间内的销售额或收益
对比多组数据: 类似于折线图,条形图也能用于对比多组数据,但通常是在不同类别上进行比较,而非随时间变化
突出异常值: 条形图可以突出显示数据的异常值,观察者可以很容易地识别出高于或低于平均水平的类别
三、直方图直方图是一种用于展示数据分布情况的图表,主要用于描述数值型数据的频数分布。
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,则默认为 0histtype'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、 直方图 from matplotlib import pyplot as plt from random import randint plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False data = [randint(1, 100) for _ in range(100)] plt.hist(data,20,facecolor='tab:orange',edgecolor='white',alpha=0.5) 3.3、主要作用和适用场景展示数据分布: 直方图可用于呈现数值型数据的分布情况,帮助观察者了解数据集中在哪个范围内、是否存在偏斜以及分布的形状
观察数据的集中趋势和离散程度: 通过直方图,你可以直观地看到数据的中心位置(集中趋势)和数据的分散程度(离散程度),从而更好地理解数据的整体特征
识别异常值: 直方图能够帮助你发现数据集中的异常值,即明显偏离主体的数值,这对于数据清理和异常值处理很有帮助
判断数据的对称性: 直方图的形状可以显示数据集的对称性或偏斜程度,有助于了解数据是正态分布还是偏斜分布
比较不同数据集之间的差异: 当你有多个数据集需要比较时,直方图可以清晰地展示它们的分布情况,帮助观察者理解它们之间的差异
确定数据的分组间隔: 在构建直方图时,选择适当的分组间隔对于准确地反映数据分布至关重要
Python----数据分析(Matplotlib二:绘图一:折线图,条形图,直方图)由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Python----数据分析(Matplotlib二:绘图一:折线图,条形图,直方图)”