Pandas入门篇(三)-------数据可视化篇1(matplotlib篇)

概述

Matplotlib是一个用于绘制图表和可视化数据的Python库,由John D. Hunter于2003年创建。它是一个开源项目,广泛应用于科研、教育和工程等领域。Matplotlib提供了广泛的绘图功能,适用于科学计算、数据分析、机器学习等领域,并且尤其适用于中小规模的数据集和对可视化定制要求较高的场景。

Matplotlib的主要特点包括:

  • 广泛的图表类型:支持多种图表类型,包括线图、散点图、柱状图、饼图、等高线图等,适用于不同类型的数据可视化需求。
  • 直观而灵活的绘图工具:用户可以通过简单的代码创建高质量的图表,并对其进行自定义,以满足特定的可视化需求。
  • 渐进、交互式实现数据可视化:Matplotlib支持以渐进和交互式的方式实现数据可视化,使得用户能够更深入地探索和理解数据。

Matplotlib创建图表主要有两种模式:面向对象模式(Object-Oriented API)和pyplot模式(pyplot API)。

一、pyplot模式(pyplot API):

pyplot模式提供了一种MATLAB风格的接口,它提供了一系列函数,允许用户以简单、直接的方式创建图表。在这种模式下,用户不需要显式地创建Figure和Axes对象,pyplot会自动管理这些对象。这使得代码更加简洁,易于理解和编写。

以下是一个使用pyplot模式创建简单折线图的示例:

import matplotlib.pyplot as plt  
  
# 生成数据  
x = [1, 2, 3, 4, 5]  
y = [2, 4, 6, 8, 10]  
  
# 使用pyplot绘制折线图  
plt.plot(x, y)  
  
# 显示图表  
plt.show()

运行结果:
在这里插入图片描述

二、面向对象模式(Object-Oriented API):

在这种模式下,用户会首先创建一个Figure对象,这可以看作是一个画布。然后,在这个Figure对象上,用户会创建一个或多个Axes对象,这些Axes对象就是用于绘制图表的具体区域。用户可以针对每个Axes对象进行图表的绘制和定制。这种模式提供了更大的灵活性和控制力,允许用户更精细地控制图表的各个部分。

以下是一个使用面向对象模式创建简单折线图的示例:

import matplotlib.pyplot as plt  
  
# 创建画布,
fig,ax = plt.subplots(figsize=(10,5))
  
# 使用Axes对象绘制折线图  
x = [1, 2, 3, 4, 5]  
y = [2, 4, 6, 8, 10]  
ax.plot(x, y)  
  
# 显示图表  
plt.show(fig)

运行结果:
在这里插入图片描述

这两种模式各有优缺点。面向对象模式提供了更大的灵活性和控制力,适合对图表进行更精细的定制;而pyplot模式则更加简洁直观,适合快速绘制简单的图表。用户可以根据自己的需求选择合适的模式。

三、创建图表详细流程

本次主要用pyplot模式来讲解创建图表的主要流程

(一)创建画布(figure)

figure() 是 Matplotlib 库中用于创建一个新的图形窗口的函数,它返回一个 Figure 对象,该对象可以被视为一个画布,用于绘制图表和其他图形元素。

1.函数格式

python

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)

2.参数解释

  • num:整数或字符串,可选参数。用于指定图形的编号或名称。如果提供了整数,它将是图形的编号;如果提供了字符串,它将是图形的窗口标题。如果省略,则会自动生成编号。
  • figsize:一个包含两个浮点数的元组,可选参数。指定图形的宽度和高度(以英寸为单位)。
    例如,figsize=(8, 6) 会创建一个宽度为 8 英寸、高度为 6 英寸的图形。
  • dpi:整数,可选参数。图形的分辨率,即每英寸的点数。默认值通常为 100,但可以根据需要进行调整。
  • facecolor:颜色规范字符串或 RGB 元组,可选参数。图形的背景颜色。
  • edgecolor:颜色规范字符串或 RGB 元组,可选参数。图形边缘的颜色。
  • frameon:布尔值,可选参数。如果为 True,则绘制图形边框。
  • FigureClass:Figure 的子类,可选参数。用于创建图形的自定义 Figure 类。
  • clear:布尔值,可选参数。如果为 True,则清除当前图形(如果存在)。

3.返回值

figure() 函数返回一个 Figure 对象,你可以使用它来进一步定制图形和添加子图(Axes)。

fig = plt.figure(figsize=(10, 8))

(二)传入x轴和y轴的值(plot)

plot()函数是用于在 Axes 对象上绘制线图的基本函数。它接受一系列 x 和 y 坐标点,并连接这些点以形成线。

1.函数语法

# 创建画布
matplotlib.pyplot.plot(*args, scalex=True, scaley=True, data=None)

2.参数解释

  • x, y:这些参数是序列,表示数据点的 x 和 y 坐标。通常 x 和 y 是长度相同的数组或列表。如果 x 和 y 都是缺失的,那么可以使用一个序列,此时序列中的值将被视为 y 值,x 值将被自动生成为 0, 1, 2, …。
  • fmt:字符串,可选参数,用于指定线条的颜色、样式和标记。例如,‘r-’ 表示红色实线,‘go’ 表示绿色圆圈标记点。
  • linestyle 或 ls:线条样式,例如 ‘-’、‘–’、‘-.’、‘:’ 或 ’ '(空格表示无线)。
    color 或 c:线条颜色。
  • marker:标记样式,例如 ‘o’、‘.’、‘,’、‘s’ 等。
  • mew, mfc, mec:分别表示标记边缘宽度、标记填充颜色和标记边缘颜色。
  • label:图例的标签。
  • alpha:透明度,介于 0(完全透明)和 1(完全不透明)之间。
  • linewidth 或 lw:线条宽度。

3.返回值

plot 函数返回一个线条列表,每个线条是一个 Line2D 对象,这些对象可以在之后被进一步定制或查询。

# 添加 x,y 轴
x = [1, 3, 5, 6, 10]
y = [-5, 3, 5, 6, 5]
plt.plot(x, y)

(三)添加网格线(grid)

grid()用于在图表上添加网格线。网格线可以帮助读者更容易地读取图表上的数据点,特别是在处理大量数据时。

plt.grid() 有几个可选参数,可以用来定制网格线的外观和行为。

参数:

  • b 或 bool:决定是否显示网格线。默认值为 None,意味着是否显示网格线取决于当前的 rcParam 设置。
  • axis:指定在哪个轴(‘x’, ‘y’, ‘both’)上显示网格线。默认值为 ‘both’,表示在 x 轴和 y 轴上都显示网格线。
  • which:决定网格线是在主要刻度(‘major’)上,还是在次要刻度(‘minor’)上显示,或者两者都显示(‘both’)。默认值为 ‘major’,表示只在主要刻度上显示网格线。
  • linestyle 或 ls:设置网格线的样式(例如,‘-’、‘–’、‘-.’、‘:’、‘steps’ 等)。
  • color 或 c:设置网格线的颜色。
  • alpha:设置网格线的透明度。
  • linewidth 或 lw:设置网格线的宽度。
# 添加绿色网格虚线
plt.grid(True,color= 'g',ls= '--')

(四)添加x轴和y轴值范围(xlim/ylim)

plt.xlim()/ylim用于设置当前轴的 x 轴的范围。这个函数接受两个参数,分别表示 x 轴的最小值和最大值,从而限制了图表中 x 轴显示的数据范围。

1.格式

matplotlib.pyplot.xlim/ylim(xmin/ymin=None, xmax/ymax=None)

2. 参数

  • xmin/ymin, xmax/ymax:这两个参数指定了 x 轴的范围。可以是单个值(当另一个参数为 None 时,表示只设置一端的限制,另一端保持自动计算),或者是一对值(表示同时设置最小值和最大值)。
    返回值
    plt.xlim()/ylim() 函数返回当前 x 轴的范围,即 (xmin/ymin, xmax/ymax)。
# 添加x轴和y轴值范围
plt.xlim(0, 10)
plt.ylim(-5, 10)

(五)添加x轴y轴标签(xlabel/ylabel)

xlabel 和 ylabel 是 Matplotlib 库中用于为图表的 x 轴和 y 轴添加标签的函数。这些标签可以帮助读者更好地理解图表所展示的数据。

xlabel 函数

xlabel 函数用于设置 x 轴的标签。

语法:

matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None)

参数解释:

xlabel:字符串,表示 x 轴的标签文本。
fontdict:字典,可选参数,用于指定标签文本的字体属性。
labelpad:浮点数,可选参数,表示标签与轴之间的距离。

ylabel 函数

ylabel 函数用于设置 y 轴的标签。

语法:

matplotlib.pyplot.ylabel(ylabel, fontdict=None, labelpad=None)

参数解释:

ylabel:字符串,表示 y 轴的标签文本。
fontdict:字典,可选参数,用于指定标签文本的字体属性。
labelpad:浮点数,可选参数,表示标签与轴之间的距离。

# 添加x轴和y轴值标签,size为字体大小
plt.xlabel('x', size=20)
plt.ylabel('y', size=20)

(六)添加标题和绘制图表

使用ttitle添加标题和show绘制图表

# 添加标题和绘制
plt.title('test',size=20)
plt.show()

完整流程代码实现:

import matplotlib.pyplot as plt


# 1.创建画布
plt.figure(figsize=(10, 8))
# 2.添加 x,y 轴
x = [1, 3, 5, 6, 10]
y = [-5, 3, 5, 6, 7]
plt.plot(x, y)
# 3.添加绿色网格虚线
plt.grid(True,color= 'r',ls= '--')
# 添加x轴和y轴值范围
plt.xlim(0, 10)
plt.ylim(-5, 10)
# 添加x轴和y轴值标签
plt.xlabel('x', size=10)
plt.ylabel('y', size=10)
# 添加标题和绘制
plt.title('test',size=20)
plt.show()

表格:
在这里插入图片描述

四、常用图表样式

1、折线图:使用 plot() 函数来绘制折线图。

import matplotlib.pyplot as plt  
  
x = [1, 2, 3, 4, 5]  
y = [2, 4, 6, 8, 10]  
  
plt.plot(x, y)  
plt.xlabel('X Label')  
plt.ylabel('Y Label')  
plt.title('Title')  
plt.show()

运行结果:
在这里插入图片描述

2.散点图:同样使用 plot() 函数,但可以通过指定点标记来绘制散点图。

import matplotlib.pyplot as plt  
  
x = [1, 2, 3, 4, 5]  
y = [2, 4, 1, 8, 10]  
  
plt.plot(x, y, 'o')  # 'o' 表示使用圆圈作为点标记  
plt.xlabel('X Label')  
plt.ylabel('Y Label')  
plt.title('Scatter Plot')  
plt.show()

在这里插入图片描述

三个变量时也可用size大小和color来表示第三个变量的变化

3.柱状图:使用 bar() 函数来绘制柱状图。

import matplotlib.pyplot as plt  
  
x = ['A', 'B', 'C', 'D']  
y = [10, 15, 7, 10]  
  
plt.bar(x, y)  
plt.xlabel('Categories')  
plt.ylabel('Values')  
plt.title('Bar Chart')  
plt.show()

在这里插入图片描述

4、饼图:使用 pie() 函数来绘制饼图。

import matplotlib.pyplot as plt  
  
labels = ['A', 'B', 'C', 'D']  
sizes = [15, 30, 45, 10]  
  
plt.pie(sizes, labels=labels, autopct='%1.1f%%')  # autopct 用于显示百分比  
plt.title('Pie Chart')  
plt.axis('equal')  # 保证饼图是圆的,而不是椭圆形的  
plt.show()

在这里插入图片描述

这只是 Matplotlib 的一部分功能,实际上 Matplotlib 提供了更加复杂和高级的图表类型,如等高线图、热力图、三维图表等。具体使用时,可以根据需要查阅 Matplotlib 的官方文档或相关教程来深入了解更多细节和用法。

下篇内容

Pandas的可视化

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值