Matplotlib绘图库的基本使用

Matplotlib

概述

Matplotlib是一个用于数据可视化的Python绘图库。它提供了构建各种绘图,图表和数据可视化的工具。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

Matplotlib是一个Python的数据可视化库,可以用来绘制各种类型的图表,如直方图、散点图、线图、条形图、饼图等等。Matplotlib的核心是pyplot模块,它提供了许多绘图函数和工具,可以轻松地创建各种类型的图表。

Matplotlib可以与其他Python库,如Numpy和Pandas等集成,以便更好地处理数据,并通过图形和图表来展示和观察数据的规律和趋势。

总结:MATPLOTLIB是一个强大的数据可视化工具,是学习和掌握数据可视化的必备工具

Matplotlib官网:https://matplotlib.org/

Matplotlib源代码:https://github.com/matplotlib/matplotlib

Matplotlib文档:https://matplotlib.org/stable/tutorials/index.html

在这里插入图片描述

环境初始化

新建虚拟环境,用于进行环境隔离。

mkvirtualenv matplotlib

安装与启动Jupyter

Jupyter Notebook是一个高效、灵活、易用的交互式计算工具,适用于各种数据分析、建模和可视化等任务。

# 安装
pip install jupyter

# 启动
jupyter notebook

在命令行中输入以下命令即可安装Matplotlib

pip install matplotlib

-m:执行pip模块 -U安装matplotlib包到最新版本

python3 -m pip install -U matplotlib

查看matplotlib库的版本号

import matplotlib

print(matplotlib.__version__)

基本使用

1.导入Matplotlib

使用Matplotlib绘图库,首先需要导入Matplotlib库才能使用它的功能

import matplotlib.pyplot as plt

2.创建画布

创建一个新的画布:通过plt.figure()可以设置画布的尺寸、标题等属性。

如果不显式调用plt.figure(),Matplotlib会自动创建一个默认大小和属性的画布。

当直接调用其他Matplotlib函数(如 plt.plot(), plt.scatter() 等)时,Matplotlib会自动创建一个新的画布。

# figsize:指定图的长宽
# dpi:图像的清晰度
plt.figure(figsize=(6, 5), dpi=100)

3.绘制图表

Matplotlib提供了许多不同类型的图表,可以使用plt.plot()函数绘制折线图,plt.scatter()函数绘制散点图,plt.bar()函数绘制柱状图等等。

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)

4.设置图表属性

Matplotlib提供了许多方法来设置图表的属性,如标题、标签、颜色、线型等等

plt.plot(x, y, color='red', linestyle='--', linewidth=2)
plt.title('My Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

5.显示图表
使用plt.show()函数用于显示图表

plt.show()

在Jupyter Notebook使用编辑运行代码,得到设置了折线颜色为红色,线型为虚线,线宽为2的图表。

在这里插入图片描述

基本绘图

Matplotlib是一个非常强大和灵活的数据可视化库,能够绘制常见的折线图、散点图、柱状图、直方图、饼图。

matplotlib.pytplot包含了一系列类似于matlab的画图函数。 它的函数作用于当前图形(figure)的当前坐标系(axes)。

绘制折线图

以折线的上升或下降来表示统计数量的增减变化的统计图。

特点:能够显示数据的变化趋势,反映事物的变化情况

关注点:变化

# 导入matplotlib
import matplotlib.pyplot as plt

# 创建画布 figsize:画布大小 dpi:像素密度
plt.figure(figsize=(10,5), dpi=100)

# 绘制图像
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 4, 6]
plt.plot(x, y)

# 显示图像
plt.show()

在这里插入图片描述

绘制散点图

用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。

特点:判断变量之间是否存在数量关联趋势,展示离群点

关注点:分布规律

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 4, 6]

plt.scatter(x, y)

plt.show()

在这里插入图片描述

绘制柱状图

排列在工作表的列或行中的数据可以绘制到柱状图中。

特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别

关注点:统计与对比

import matplotlib.pyplot as plt

x = ["A", "B", "C", "D", "E"]
y = [2, 4, 6, 4, 6]

plt.bar(x, y)

plt.show()

在这里插入图片描述

绘制直方图

由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。

特点:绘制连续性的数据展示一组或者多组数据的分布状况

关注点:统计

import matplotlib.pyplot as plt

x = [131, 98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 
114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136
, 126, 134, 95, 138, 117, 111,78, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126
, 130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 10]

 
plt.hist(x_value,bins=10)
 
plt.title("data analyze")
plt.xlabel("X")
plt.ylabel("Y")
 
plt.show()

在这里插入图片描述

绘制饼图

用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

特点:分类数据的占比情况

关注点:占比

import matplotlib.pyplot as plt

labels = ["A", "B", "C", "D", "E"]
sizes = [10, 20, 30, 20, 20]

plt.pie(sizes, labels=labels)

plt.show()

在这里插入图片描述

其他绘图

Matplotlib提供了丰富的图形类型,可以满足各种数据可视化的需求。不同类型的图形适用于不同的数据结构和分析目的,使用时需要根据具体情况进行选择。

除了常见的折线图、散点图、柱状图、直方图和饼图,它还能绘制以下类型的图形:

箱型图(Box Plot)

箱型图是一种常用的数据可视化方法,它能直观地展示数据的分布特征,如中位数、四分位数、异常值等。

# 导入所需的库
import matplotlib.pyplot as plt
import numpy as np

# 生成用于箱型图的随机数据
# 'data'列表中的每个元素都是一个包含100个样本的数据集
# 每个数据集的标准差从1递增到4
data = [np.random.normal(0, std, 100) for std in range(1, 5)]

# 创建箱型图
# 使用'tick_labels'参数设置x轴刻度标签
plt.boxplot(data, tick_labels=['标准差1', '标准差2', '标准差3', '标准差4'])

# 设置图表标题和坐标轴标签
plt.title('箱型图示例')
plt.xlabel('标准差')
plt.ylabel('数值')

# 显示图表
plt.show()

在这里插入图片描述

热力图(Heatmap)

热力图通常用于可视化二维数据,如温度分布、销售数据等。颜色的深浅表示数值的大小,可以帮助快速识别数据的分布特征。

# 导入所需的库
import matplotlib.pyplot as plt
import numpy as np

# 生成用于热力图的随机数据
# 'data'是一个10x10的二维数组,包含随机生成的浮点数
data = np.random.rand(10, 10)

# 创建热力图
# 使用'imshow'函数绘制热力图
# 设置颜色映射为'YlOrRd'(黄-橙-红)
plt.imshow(data, cmap='YlOrRd')

# 添加颜色条
# 'colorbar'函数用于添加颜色条
plt.colorbar()

# 设置图表标题
plt.title('热力图示例')

# 显示图表
plt.show()

在这里插入图片描述

极坐标图(Polar Plot)

极坐标图通常用于显示周期性数据,如风向、功率分布等。与直角坐标系不同,极坐标图使用角度和半径来表示数据,可以更直观地展示数据的角度分布特征。

# 导入所需的库
import matplotlib.pyplot as plt
import numpy as np

# 生成用于极坐标图的数据
# 'theta'是从0到2π的100个角度值
# 'radii'是100个随机生成的半径值
theta = np.linspace(0, 2 * np.pi, 100)
radii = 10 * np.random.rand(100)

# 创建极坐标图
# 使用'plt.polar()'函数绘制极坐标图
plt.polar(theta, radii)

# 设置图表标题
plt.title('极坐标图示例')

# 显示图表
plt.show()

在这里插入图片描述

3D 散点图(3D Scatter Plot)

3D散点图可以用于直观地展示三维数据,比如物理模拟、科学研究等领域。通过将数据点绘制在三维空间中,可以更好地理解数据的分布特征。

# 导入所需的库
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# 创建3D散点图
# 创建一个新的figure对象
fig = plt.figure()
# 在figure上添加一个3D坐标轴
ax = fig.add_subplot(111, projection='3d')

# 生成3D散点图的数据
# 'x', 'y', 'z'分别是100个随机生成的坐标值
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)

# 使用'ax.scatter()'函数绘制3D散点图
ax.scatter(x, y, z)

# 设置图表标题
plt.title('3D 散点图示例')

# 显示图表
plt.show()

在这里插入图片描述

雷达图(Radar Chart)

雷达图能直观地展示多个属性之间的相对值,如公司各部门的关键绩效指标(KPI)、不同产品的特性等。

import matplotlib.pyplot as plt
import numpy as np

# 定义雷达图数据
# 'labels'列表包含了雷达图的各个维度标签
labels = ['销售', '市场', '研发', '客户服务', '财务']
# 'company_a'和'company_b'分别是两家公司在各个维度上的得分
company_a = [8, 7, 6, 9, 5]
company_b = [7, 6, 8, 6, 7]

# 创建雷达图
# 使用'plt.subplots()'创建一个新的figure和axes对象
# 设置'figsize'参数控制图表大小
# 设置'subplot_kw'参数让axes以极坐标模式绘制
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
# 使用'ax.plot()'在极坐标系中绘制两家公司的数据
ax.plot(np.radians(np.linspace(0, 360, len(labels), endpoint=False)), company_a)
ax.plot(np.radians(np.linspace(0, 360, len(labels), endpoint=False)), company_b)
# 使用'ax.set_thetagrids()'设置极坐标系的角度刻度标签
ax.set_thetagrids(np.degrees(np.linspace(0, 2*np.pi, len(labels), endpoint=False)), labels)
# 设置图表标题
ax.set_title('公司A和公司B的关键绩效指标')
# 添加图例
ax.legend(['公司A', '公司B'])
# 显示图表
plt.show()

在这里插入图片描述

瀑布图(Waterfall Chart)

用于展示数值的累积变化,如收支变化、利润构成等。

import matplotlib.pyplot as plt
import numpy as np

# 定义瀑布图数据
# 'initial_value'是期初利润
initial_value = 1000
# 'changes'列表包含了各项收支因素对利润的影响
changes = [-200, 150, 300, -100, 250]
# 'labels'列表包含了每个收支因素的标签
labels = ['期初', '销售成本', '营销费用', '管理费用', '其他收入', '期末']

# 创建瀑布图
# 使用'plt.subplots()'创建一个新的figure和axes对象
# 设置'figsize'参数控制图表大小
fig, ax = plt.subplots(figsize=(8, 6))
# 使用'np.arange()'创建x轴刻度的索引
x = np.arange(len(labels))
# 使用'ax.bar()'绘制每个收支因素对应的柱状图
# 第一个柱子表示期初利润,后续的柱子表示各项收支因素
ax.bar(x, [initial_value] + changes)
# 使用'ax.plot()'绘制一条连接期初和期末利润的虚线
ax.plot([0, len(x)-1], [initial_value, initial_value + sum(changes)], 'k--', lw=2)
# 使用'ax.set_xticks()'和'ax.set_xticklabels()'设置x轴刻度标签
ax.set_xticks(x)
ax.set_xticklabels(labels)
# 设置图表标题
ax.set_title('公司利润变化情况')
# 显示图表
plt.show()

在这里插入图片描述

仪表盘(Gauge Plot)

用于直观地展示单个指标的当前值,如库存水平、目标完成进度等。

import matplotlib.pyplot as plt
import numpy as np

# 定义仪表盘数据
value = 80                # 当前指标值
min_value = 0             # 指标最小值
max_value = 100           # 指标最大值
label = '库存水平'         # 指标标签

# 创建仪表盘
fig, ax = plt.subplots(figsize=(6, 6))  # 创建一个6x6英寸的figure和axes对象
ax.set_xlim(0, 1)                      # 设置x轴范围为[0, 1]
ax.set_ylim(0, 1)                      # 设置y轴范围为[0, 1]

# 添加仪表盘外圈
ax.add_artist(plt.Circle((0.5, 0.5), 0.4, fill=False))  # 添加一个中心为(0.5, 0.5)、半径为0.4的空心圆

# 添加仪表盘背景
ax.add_artist(plt.Polygon([[0.1, 0.5], [0.5, 0.9], [0.9, 0.5], [0.5, 0.1]], fill=True, color='lightgray'))  # 添加一个灰色的多边形作为背景

# 添加仪表盘指针
ax.add_artist(plt.Polygon([[0.5, 0.5], [0.5+0.4*np.cos(np.radians(90-value/max_value*180)), 0.5+0.4*np.sin(np.radians(90-value/max_value*180))],
                          [0.5, 0.5]], fill=True, color='red'))  # 添加一个红色的三角形作为指针

# 添加当前值和标签
ax.text(0.5, 0.5, f"{value:.0f}%", ha='center', va='center', fontsize=20)  # 在仪表盘中心添加当前值
ax.text(0.5, 0.25, label, ha='center', va='center', fontsize=14)  # 在仪表盘下方添加标签

plt.axis('off')  # 隐藏坐标轴
plt.show()  # 显示图表

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeDevMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值