【100天精通Python】Day64:Python可视化_Matplotlib绘制误差线图、填充图、堆叠面积图,示例+代码

简介: 【100天精通Python】Day64:Python可视化_Matplotlib绘制误差线图、填充图、堆叠面积图,示例+代码

1 绘制误差线图(errorbar)

       误差线图用于可视化一个或多个数据集的测量值及其相关误差或不确定性。每个数据点可能有不同的误差范围,这些误差可以表示为上下误差条、对称误差、非对称误差等。通常,误差线图用于比较多个实验条件或数据源之间的差异。

(1) 上下误差条(Vertical Error Bars):

  • 上下误差条用于表示每个数据点在垂直方向上的误差范围,通常用于表示数据点的上下浮动范围,这可以是测量误差、标准差等。

(2)对称误差(Symmetric Error):

  • 对称误差表示数据点的误差范围在两个方向上是对称的,通常用于表示标准差或置信区间等。

(3)非对称误差(Asymmetric Error):

  • 非对称误差表示数据点的误差范围在两个方向上不对称,通常用于表示实验测量误差等。

示例:绘制误差线图

import matplotlib.pyplot as plt
import numpy as np
# 准备数据
x = np.array([1, 2, 3, 4, 5])
y1 = np.array([2, 3, 5, 4, 6])
y2 = np.array([3, 4, 6, 5, 7])
# 不对称误差范围
y1_lower_err = np.array([0.2, 0.3, 0.1, 0.4, 0.15])
y1_upper_err = np.array([0.1, 0.25, 0.15, 0.3, 0.1])
# 对称误差范围
y2_err = np.array([0.15, 0.2, 0.25, 0.2, 0.18])
# 绘制误差线图
plt.errorbar(x, y1, yerr=[y1_lower_err, y1_upper_err], fmt='o', label='Data 1 (Asymmetric Errors)', capsize=5)
plt.errorbar(x, y2, yerr=y2_err, fmt='s', label='Data 2 (Symmetric Errors)', capsize=5)
# 添加标签和标题
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Error Bar Plot')
# 添加图例
plt.legend()
# 显示图形
plt.grid(True)
plt.show()

运行:

        这段代码用于绘制误差线图,包括不对称误差范围和对称误差范围。其中,x轴表示自变量,y轴表示因变量。

       首先,通过导入matplotlib.pyplot和numpy库准备绘图所需的数据。数据包括x的取值和两个因变量y1和y2的取值。 接下来,通过numpy库创建了不对称误差范围的上限和下限数组(y1_lower_err和y1_upper_err),以及对称误差范围的数组(y2_err)。

       然后,使用plt.errorbar函数分别绘制了两组数据的误差线,其中yerr参数分别传入了不对称和对称误差范围的数组,fmt参数指定了误差线的样式。

       同时,添加了标签和标题用以说明图形的含义,并添加了图例以表示参与比较的数据。 最后,调用plt.grid(True)显示网格线,调用plt.show()显示图形。


2 绘制填充图(fill_between)

       绘制填充图(Fill Between Plot)用于可视化两个数据集之间的区域或曲线下的区域。这通常用于表示数据的不确定性、区间、或者两个数据集之间的差异。

      绘制填充图的关键思想是创建一个包围两个数据集之间区域的闭合形状,并对其进行填充。通常,这两个数据集可以是两条曲线、一条曲线和坐标轴之间的区域、或者两个曲线之间的区域。填充图在数据可视化中常用于突出数据集的差异或不确定性范围。

示例代码

以下是一个示例代码,演示如何使用 Matplotlib 绘制填充图来表示两个数据集之间的区域:

import matplotlib.pyplot as plt
import numpy as np
# 准备数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建填充图
plt.fill_between(x, y1, y2, color='blue', alpha=0.5, label='Region Between y1 and y2')
# 添加标签和标题
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Fill Between Plot')
# 添加图例
plt.legend()
# 显示图形
plt.grid(True)
plt.show()

运行:

        在这个示例中,我们创建了两个数据集 y1 和 y2,并使用 plt.fill_between() 函数绘制了它们之间的填充区域。

                            参数 x 表示 x 坐标的数据,

       y1 和 y2 分别表示两个数据集的 y 坐标,

       color 指定填充区域的颜色,

       alpha 控制填充区域的透明度,

       label 用于图例的标签。

最后,我们添加了标签、标题、图例,并显示了填充图。

这个示例演示了如何绘制填充图,以突出两个数据集之间的区域,并使数据的不确定性或差异更清晰可见。你可以根据需要自定义填充图的样式、颜色和属性。

2.2 绘制填充线图(Filled Line Plot)

  • 填充线图是通过将线图的下方区域着色来创建的。它用于强调数据的趋势和变化,通常表示数据点与基线之间的关系。
  • 示例代码
import matplotlib.pyplot as plt
import numpy as np
# 准备数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
# 创建填充线图
plt.fill_between(x, y, alpha=0.3)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Filled Line Plot')
plt.show()

在上述示例中,我们使用 plt.fill_between() 函数创建了填充线图,通过填充线下方的区域来突出数据的波动。

2.3 堆叠面积图(Stacked Area Plot)

  • 堆叠面积图用于表示多个数据系列的累积贡献,通常表示不同类别的数据在总体中的比例。
  • 示例代码
import matplotlib.pyplot as plt
import numpy as np
# 准备数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建堆叠面积图
plt.stackplot(x, y1, y2, labels=['Sin', 'Cos'], alpha=0.5)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Stacked Area Plot')
plt.legend(loc='upper right')
plt.show()

运行:

       在上述示例中,我们使用 plt.stackplot() 函数创建了堆叠面积图,将两个数据系列 y1y2 堆叠在一起,通过填充区域来表示它们的贡献。

2.4 绘制填充直方图(Filled Histogram)

  • 填充直方图是在直方图的每个条形之间填充颜色,以强调不同数据区间的分布。
  • 示例:绘制男性和女性身高分布的比较的填充直方图
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据,模拟身高分布
np.random.seed(0)
male_heights = np.random.normal(175, 10, 500)
female_heights = np.random.normal(162, 8, 500)
# 创建填充直方图,同时显示男性和女性身高分布
plt.hist(male_heights, bins=30, density=True, alpha=0.5, color='blue', label='Male Heights')
plt.hist(female_heights, bins=30, density=True, alpha=0.5, color='pink', label='Female Heights')
# 添加标签和标题
plt.xlabel('Height (cm)')
plt.ylabel('Frequency')
plt.title('Height Distribution (Male vs. Female)')
plt.legend()
# 显示图形
plt.show()

       这段代码用于生成随机数据,模拟男性和女性的身高分布,并通过填充直方图将两者的身高分布可视化。

       首先,通过导入matplotlib.pyplot和numpy库准备绘图所需的数据。使用numpy库中的random模块生成了500个符合正态分布的男性身高数据和女性身高数据。

       接下来,使用plt.hist函数分别绘制了男性和女性身高的填充直方图。其中,bins参数指定了直方图的箱子数量,density参数设置为True可将频率转换为概率密度,alpha参数设置了填充颜色的透明度,

       color参数分别设置了男性身高直方图的颜色为蓝色,女性身高直方图的颜色为粉色,label参数指定了相应的标签。

       然后,添加了标签和标题用以说明图形的含义,并添加了图例以表示男性和女性身高的区分。

       最后,调用plt.show()显示图形。  


目录
相关文章
|
24天前
|
Python
【10月更文挑战第10天】「Mac上学Python 19」小学奥数篇5 - 圆和矩形的面积计算
本篇将通过 Python 和 Cangjie 双语解决简单的几何问题:计算圆的面积和矩形的面积。通过这道题,学生将掌握如何使用公式解决几何问题,并学会用编程实现数学公式。
152 60
|
27天前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
【10月更文挑战第7天】金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
33 4
|
1月前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
69 0
|
2月前
|
存储 Python
Python示例:分解一个不多于指定位的正整数
Python示例:分解一个不多于指定位的正整数
|
27天前
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
22 2
Python实用记录(三):通过netron可视化模型
|
7天前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
13 1
|
26天前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
2月前
|
数据可视化 Python
Python数据可视化-动态柱状图可视化
Python数据可视化-动态柱状图可视化
|
2月前
|
JSON 数据可视化 数据处理
Python数据可视化-折线图可视化
Python数据可视化-折线图可视化
|
21天前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据处理与可视化——以气温数据分析为例
【10月更文挑战第12天】使用Python进行数据处理与可视化——以气温数据分析为例
150 0