内容目录
Matplotlib的简介¶
Matplotlib是一个用于绘制数据可视化图形的Python库,提供了丰富的绘图功能,包括折线图、散点图、柱状图、饼图、箱线图等。Matplotlib可以帮助用户直观地展示数据,从而更好地理解数据分布和趋势。
Matplotlib的功能:
- 绘图功能:Matplotlib支持各种类型的图形绘制,包括线型图、散点图、柱状图、饼图、箱线图等。
- 自定义性:您可以自定义图形的颜色、线型、标签、标题等属性,以满足不同的需求。
- 支持多种格式:Matplotlib可以将生成的图形保存为多种格式,如PNG、JPEG、PDF等。
- 交互式绘图:结合Jupyter Notebook等工具,可以实现交互式绘图,方便数据分析和展示。
一旦安装了Matplotlib库,您就可以开始使用它来创建各种类型的图形,以便更好地展示和理解数据。
Matplotlib的常见图示¶
折线图(Line Plot)¶
- 用途:用于显示数据随时间或其他连续变量的变化趋势。
- 场景:股票走势、气温变化等时间序列数据的可视化。
In [1]:
import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
# 创建折线图
plt.plot(x, y)
# 添加标题和标签
plt.title('Example Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()
柱状图(Bar Plot)¶
- 用途:用于比较不同类别之间的数据。
- 场景:销售额对比、不同城市人口数量等类别数据的展示。
In [19]:
import matplotlib.pyplot as plt
# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [20, 35, 30, 25, 40]
# 创建柱状图
plt.bar(categories, values)
# 添加标题和标签
plt.title('Example Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')
# 显示图形
plt.show()
In [17]:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['PingFang HK']
# 省份和人口数量数据(示例数据,部分省份)
provinces = ['北京', '上海', '广东', '江苏', '浙江', '四川', '湖北', '河南', '湖南', '福建']
population = [2154, 2480, 12347, 8449, 6392, 8351, 6256, 9652, 6899, 4268] # 人口数量(单位:万人)
# 创建横向柱状图
plt.figure(figsize=(12, 8)) # 设置图形大小
plt.barh(provinces, population, color='skyblue')
# 添加标题和标签
plt.title('2023年中国各省份人口数量')
plt.xlabel('人口数量(万人)')
plt.ylabel('省份')
# 显示图形
plt.show()
散点图(Scatter Plot)¶
- 用途:用于显示两个变量之间的关系。
- 场景:身高体重关系、考试成绩相关性等变量之间的关系。
In [20]:
import matplotlib.pyplot as plt
import numpy as np
# 生成正相关数据
np.random.seed(0)
x = np.random.rand(100)
y = x + np.random.normal(0, 0.1, 100)
# 绘制散点图
plt.scatter(x, y, color='skyblue', edgecolors='black')
# 添加标题和标签
plt.title('Positive Correlation Scatter Plot')
plt.xlabel('X')
plt.ylabel('Y')
# 显示图形
plt.show()
饼图(Pie Chart)¶
- 用途:用于展示数据的相对比例。
- 场景:市场份额占比、各项支出比例等相对比例的展示。
In [5]:
import matplotlib.pyplot as plt
# 数据
labels = ['A', 'B', 'C', 'D']
sizes = [25, 35, 20, 20]
# 饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
# 添加标题
plt.title('Example Pie Chart')
# 显示图形
plt.axis('equal') # 保持饼图圆形
plt.show()
箱线图(Box Plot)¶
箱线图(Box Plot)是一种用于显示数据分布情况的统计图表。它展示了数据的五个统计量:最小值、第一四分位数(Q1)、中位数、第三四分位数(Q3)和最大值。箱线图还可以用来检测数据集中的离群值。
箱线图的组成部分:
- 箱体(Box):位于第一四分位数(Q1)和第三四分位数(Q3)之间,表示数据的中间50%范围。
- 中位数(Median):箱体内部的线表示数据的中位数。
- 上边缘(Upper Whisker):连接第三四分位数(Q3)和最大值,用于显示数据的上限范围。
- 下边缘(Lower Whisker):连接最小值和第一四分位数(Q1),用于显示数据的下限范围。
- 离群值(Outliers):超出上下边缘的数据点,可能表示数据中的异常值。
箱线图的用途:
- 显示数据分布:箱线图可以帮助您直观地了解数据的分布情况,包括中位数、四分位数和离群值。
- 比较数据集:可以通过箱线图比较不同数据集之间的分布情况,找出差异和相似之处。
- 检测异常值:箱线图可以帮助您识别数据集中的离群值,从而进行异常检测和数据清洗。
- 通过箱线图,您可以快速了解数据的整体分布情况和离群值情况,有助于进行数据分析和决策。
四分位数是统计学中用于描述数据集中位置的概念,将数据集分成四等份。四分位数通常用于描述数据的分布情况和统计摘要。
四分位数的计算方法: 假设有一个有序的数据集,从小到大排列为 $( x_1, x_2, x_3, …, x_n \$,其中 ( n ) 是数据集的总数。
第一四分位数(Q1):数据集中最小的 25% 的数据所对应的值。
- 计算位置:\$ \text{Q1} = x_{(n+1)/4} \$
第二四分位数(Q2):即中位数,将数据集分成两个部分,前后各占50%。
- 计算位置:\$ \text{Q2} = x_{(n+1)/2} \$
第三四分位数(Q3):数据集中最大的 25% 的数据所对应的值。
- 计算位置:\$ \text{Q3} = x_{(3(n+1))/4} \$
四分位数的特点:
- 四分位数提供了数据集的位置信息,帮助了解数据的分布情况。
- 通过四分位数,可以识别出数据集中的上下四分之一的位置,有助于检测离群值和判断数据的集中程度。
- 四分位数在箱线图等统计图表中常用,用于显示数据的中位数、上下四分之一范围以及离群值。
箱线图上边缘和下边缘的计算方法:
箱线图的上边缘:通常定义为Q3 + 1.5 * IQR,表示数据的上限范围。
箱线图的下边缘:通常定义为Q1 – 1.5 * IQR,表示数据的下限范围。
In [6]:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(10)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]
# 创建箱线图
plt.boxplot(data)
# 添加标题和标签
plt.title('Example Box Plot')
plt.xlabel('Data Sets')
plt.ylabel('Values')
# 显示图形
plt.show()
直方图(Histogram)¶
直方图是一种用矩形条表示数据频数分布的统计图表。它将数据分成若干组(也称为“箱”或“桶”),然后绘制每个组的频数或频率。直方图的横轴通常表示数据的取值范围,纵轴表示数据的频数或频率。
直方图的特点和用途:
- 展示数据分布:直方图可以帮助您了解数据的分布情况,包括数据的集中程度、偏斜程度等。
- 识别模式:通过直方图,您可以识别数据中的模式、趋势和异常值。
- 比较数据集:可以通过直方图比较不同数据集之间的分布情况,找出差异和相似之处。
- 确定数据规律:直方图有助于发现数据的规律性,帮助做出预测和决策。
In [7]:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(0)
data = np.random.randn(1000)
# 创建直方图
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
# 添加标题和标签
plt.title('Example Histogram')
plt.xlabel('Values')
plt.ylabel('Frequency')
# 显示图形
plt.show()
In [9]:
import numpy as np
import matplotlib.pyplot as plt
# 生成符合二项分布的随机数
n = 10 # 试验次数
p = 0.5 # 成功概率
size = 1000 # 生成随机数的数量
random_data = np.random.binomial(n, p, size)
# 绘制直方图
plt.hist(random_data, bins=range(n+2), color='skyblue', edgecolor='black')
plt.title('Binomial Distribution')
plt.xlabel('Number of Successes')
plt.ylabel('Frequency')
plt.show()