Matplotlib图形

1、 柱状图

柱状图(Bar Chart)是一种常用的数据可视化工具,用于展示分类数据的分布情况。

语法

ax.bar(x, height, width=0.8, bottom=None, align='center', **kwargs)

参数

  • x: 柱状图的 X 轴位置。

  • height: 柱状图的高度。

  • width: 柱状图的宽度,默认为 0.8。

  • bottom: 柱状图的底部位置,默认为 0。

  • align: 柱状图的对齐方式,可以是 'center'(居中对齐)或 'edge'(边缘对齐)。

  • **kwargs: 其他可选参数,用于定制柱状图的外观,如 color、edgecolor、linewidth 等。

案例1:

x = [1, 2, 3, 4, 5, 6]
    y = [100, 50, 200, 350, 240, 190]

    fig, axs = plt.subplots()
    # bar():柱状图
    # 参数:
    # :x轴的数据,格式是列表# height:y轴的数据,格式是列表
    # width:柱子的宽度,范围在0-1之间
    # align:柱子的对齐方式,center、edge
    axs.bar(x, y, width=0.6, align='edge')

    plt.show()

案例2:堆叠柱状图

x = [1, 2, 3, 4, 5, 6]
    y1 = [30, 40, 25, 60, 18, 45]
    y2 = [10, 15, 9, 21, 23, 10]

    fig, axs = plt.subplots()
    # bottom:柱状图底部的位置,默认为0
    axs.bar(x, y1, color='r')
    axs.bar(x, y2, bottom=y1, color='y')

    plt.show()

说明:

bottom=values1:绘制第二个数据集的柱状图,堆叠在第一个数据集上

案例3:分组柱状图

# 数据
categories = ['A', 'B', 'C', 'D']
values1 = [20, 35, 30, 25]
values2 = [15, 25, 20, 10]
​
# 创建图形和子图
fig, ax = plt.subplots()
​
# 计算柱状图的位置
x = np.arange(len(categories))
width = 0.35
​
# 绘制第一个数据集的柱状图
ax.bar(x - width/2, values1, width, color='skyblue', label='Values 1')
​
# 绘制第二个数据集的柱状图
ax.bar(x + width/2, values2, width, color='lightgreen', label='Values 2')
​
# 设置 X 轴标签
ax.set_xticks(x)
ax.set_xticklabels(categories)
​
# 设置标题和标签
ax.set_title('Grouped Bar Chart')
ax.set_xlabel('Categories')
ax.set_ylabel('Values')
​
# 添加图例
ax.legend()
​
# 显示图形
plt.show()

2、 直方图

直方图(Histogram)是一种常用的数据可视化工具,用于展示数值数据的分布情况。

语法

ax.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, **kwargs)

参数

  • x: 数据数组。

  • bins: 直方图的柱数,可以是整数或序列。

  • range: 直方图的范围,格式为 (min, max)。

  • density: 是否将直方图归一化,默认为 False。

  • weights: 每个数据点的权重。

  • cumulative: 是否绘制累积直方图,默认为 False。

  • **kwargs: 其他可选参数,用于定制直方图的外观,如 color、edgecolor、linewidth 等。

案例:

data = np.random.randn(1000)

    fig, axs = plt.subplots()

    axs.hist(data, bins=30)

    plt.show()

3、 饼图

饼图(Pie Chart)是一种常用的数据可视化工具,用于展示分类数据的占比情况。

语法

ax.pie(x, explode=None, labels=None, colors=None, autopct=None, shadow=False, startangle=0, **kwargs)

参数

  • x: 数据数组,表示每个扇区的占比。

  • explode: 一个数组,表示每个扇区偏离圆心的距离,默认为 None。

  • labels: 每个扇区的标签,默认为 None。

  • colors: 每个扇区的颜色,默认为 None。

  • autopct: 控制显示每个扇区的占比,可以是格式化字符串或函数,默认为 None。

  • shadow: 是否显示阴影,默认为 False。

  • startangle: 饼图的起始角度,默认为 0。

  • **kwargs: 其他可选参数,用于定制饼图的外观。

案例:

def np_pie():
    x = [20, 30, 25, 40]
    label = ['a', 'b', 'c', 'd']

    fig, axs = plt.subplots()

    axs.pie(x, labels=label, startangle=90, autopct='%1.1f%%')

    plt.show()

4、 折线图

使用 plot 函数

案例:

from matplotlib import pyplot as plt
​
# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
​
# 创建图形和子图
fig, ax = plt.subplots()
​
# 绘制多条折线图
ax.plot(x, y1, label='sin(x)', color='blue')
ax.plot(x, y2, label='cos(x)', color='red')
​
# 设置标题和标签
ax.set_title('Multiple Line Charts')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
​
# 添加图例
ax.legend()
​
# 显示图形
plt.show()

5、 散点图

散点图(Scatter Plot)是一种常用的数据可视化工具,用于展示两个变量之间的关系。

语法

ax.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, **kwargs)

参数

  • x: X 轴数据。

  • y: Y 轴数据。

  • s: 点的大小,可以是标量或数组。

  • c: 点的颜色,可以是标量、数组或颜色列表。

  • marker: 点的形状,默认为 'o'(圆圈)。

  • cmap: 颜色映射,用于将颜色映射到数据。

  • norm: 归一化对象,用于将数据映射到颜色映射。

  • vmin, vmax: 颜色映射的最小值和最大值。

  • alpha: 点的透明度,取值范围为 0 到 1。

  • linewidths: 点的边框宽度。

  • edgecolors: 点的边框颜色。

  • **kwargs: 其他可选参数,用于定制散点图的外观。

案例:

def np_scatter():
    x = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    data = [
        [120, 132, 101, 134, 90, 230, 210],
        [220, 182, 191, 234, 290, 330, 310],
    ]
    y0 = data[0]
    y1 = data[1]

    flg, axs = plt.subplots()
    axs.scatter(x, y0, color='red')
    axs.scatter(x, y1, color='b')
    plt.show()

marker常用的参数值:

  • 'o': 圆圈

  • 's': 正方形

  • 'D': 菱形

  • '^': 上三角形

  • 'v': 下三角形

  • '>': 右三角形

  • '<': 左三角形

  • 'p': 五边形

  • '*': 星形

  • '+': 加号

  • 'x': 叉号

  • '.': 点

  • ',': 像素

  • '1': 三叉戟下

  • '2': 三叉戟上

  • '3': 三叉戟左

  • '4': 三叉戟右

  • 'h': 六边形1

  • 'H': 六边形2

  • 'd': 小菱形

  • '|': 竖线

  • '_': 横线

6、 图片读取

plt.imread 是 Matplotlib 库中的一个函数,用于读取图像文件并将其转换为 NumPy 数组。这个函数非常方便,可以轻松地将图像加载到 Python 中进行处理或显示。

参数

  • fname: 图像文件的路径(字符串)。

  • format: 图像格式(可选)。如果未指定,imread 会根据文件扩展名自动推断格式。

返回值

  • 返回一个 NumPy 数组,表示图像的像素数据。数组的形状取决于图像的格式:

    • 对于灰度图像,返回一个二维数组 (height, width)

    • 对于彩色图像,返回一个三维数组 (height, width, channels),其中 channels 通常是 3(RGB)或 4(RGBA)。

案例:

def np_imread():
    filepath = os.path.dirname(__file__)
    print(filepath)
    filepath = os.path.join(filepath, 'leaf.png')
    print(filepath)
    filepath = os.path.relpath(filepath)
    print(filepath)

    data = plt.imread(filepath)
    print(data.shape)

    print(data)

    # data = data+0.1
    # print(data)

    # 将数组显示为图片
    plt.imshow(data)

    plt.show()

    data1 = np.transpose(data, (2, 0, 1))

    for i in data1:
        plt.imshow(i)
        plt.show()

        # 保存图片
        plt.imsave('leaf1.png', i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值