使用Python绘制带填充纹理的堆叠图

作者:

文章目录
  • 在开始绘制图表之前,我们需要确保已经安装了 Matplotlib 库。如果你尚未安装 Matplotlib,可以通过【win】+【R】打开【运行】,并输入[cmd],点击确定,并输入以下命令进行安装: pip install matplotlib 安装完成后,你就可以在 Python 脚本中导入并使用 Matplotlib 了。
  • 为了绘制堆叠图,我们需要准备一些数据。在本例中,我们使用一个 JSON 格式的数据结构来存储样本数、RMSE 值以及类别标签。以下是数据的具体格式: data = { “samples”: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], “RMSE_values”: [ [0.15, 0.2, 0.25], [0.3, 0.35, 0.3], [0.25, 0.3, 0.35], [0.2, 0.25, 0.3], [0.18, 0.22, 0.28], [0.2, 0.24, 0.29], [0.22, 0.26, 0.31], [0.19, 0.23, 0.32], [0.17, 0.21, 0.33], [0.16, 0.2, 0.34], [0.14, 0.19, 0.35], [0.13, 0.18, 0.36], [0.12, 0.17, 0.37] ], “labels”: [“A”, “B”, “C”, “D”] } 其中: samples 表示样本编号。 RMSE_values 是一个二维列表,每一行对应一个样本,每一列对应一个类别的值。 labels 是类别的标签。
  • 在绘制图表之前,我们需要设置合适的绘图风格和字体,以确保图表的美观性和可读性。Matplotlib 提供了多种预设的绘图风格,例如 seaborn-v0_8-colorblind,这种风格适合色盲用户,能够提供清晰的视觉效果。 import matplotlib.pyplot as plt # 检查可用样式 print(“Available styles:”, plt.style.available) # 设置绘图风格和字体 plt.style.use(‘seaborn-v0_8-colorblind’) # 使用可用的样式 plt.rcParams.update({ ‘font.family’: ‘SimHei’, ‘font.size’: 10, ‘axes.unicode_minus’: False })
  • 接下来,我们将使用 Matplotlib 的bar方法来绘制堆叠条形图。为了实现纹理填充,我们需要为每个条形图指定 hatch 参数。以下是完整的代码实现: import numpy as np # 创建图形和坐标轴对象,调整图形大小为 (10, 6) fig, ax = plt.subplots(figsize=(10, 6)) # 调整图形大小 # 定义颜色和纹理 colors = [‘navy’, ‘teal’, ‘mediumaquamarine’, ‘khaki’] # 定义每个类别的颜色 hatches = [‘xx’, ”, ‘\\’, ‘//’] # 定义每个类别的纹理 # 初始化底部位置 bottom = np.zeros(len(data[“samples”])) # 绘制堆叠条形图并添加纹理 for i, label in enumerate(data[“labels”]): if i < 3: # 只有三个类别需要绘制,因为数据中只有三个值 values = [item[i] for item in data[“RMSE_values”]] # 提取每个样本对应类别的值 # 绘制条形图,并应用颜色和纹理 bars = ax.bar(data[“samples”], values, bottom=bottom, color=colors[i], hatch=hatches[i], label=label, edgecolor=’black’, width=0.6) bottom += values # 更新底部位置以便堆叠下一个类别
  • 为了让图表更加完整和易于理解,我们需要添加坐标轴标签、标题、图例以及网格线。 # 设置坐标轴标签和标题 ax.set_xlabel(‘样本数’) # 设置x轴标签 ax.set_ylabel(‘RMSE (米)’) # 设置y轴标签 ax.set_title(‘纹理填充堆叠条形图’) # 设置图表标题为中文 # 添加图例 ax.legend(loc=’upper right’) # 设置图例位置 # 设置网格和坐标轴范围 ax.grid(True, axis=’y’, linestyle=’–‘, alpha=0.7) # 添加网格线 ax.set_ylim(0, 1.5) # 设置y轴范围
  • 最后,我们使用 plt.show() 方法来显示图表。如果需要保存图表,可以使用 plt.savefig() 方法。 # 显示图表 plt.show() # 关闭绘图窗口 plt.close()
  • 运行上述代码后,你将得到一个带有填充纹理的堆叠条形图。每个条形图的纹理和颜色都清晰可见,能够直观地展示不同类别在各个样本中的分布情况。
  • import matplotlib.pyplot as plt import numpy as np # 从JSON格式的数据中提取需要绘制的图表信息 data = { “samples”: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], “RMSE_values”: [ [0.15, 0.2, 0.25], [0.3, 0.35, 0.3], [0.25, 0.3, 0.35], [0.2, 0.25, 0.3], [0.18, 0.22, 0.28], [0.2, 0.24, 0.29], [0.22, 0.26, 0.31], [0.19, 0.23, 0.32], [0.17, 0.21, 0.33], [0.16, 0.2, 0.34], [0.14, 0.19, 0.35], [0.13, 0.18, 0.36], [0.12, 0.17, 0.37] ], “labels”: [“A”, “B”, “C”, “D”] } # 检查可用样式 print(“Available styles:”, plt.style.available) # 设置绘图风格和字体 plt.style.use(‘seaborn-v0_8-colorblind’) # 使用可用的样式 # 设置支持中文的字体 plt.rcParams.update({ ‘font.family’: ‘SimHei’, ‘font.size’: 10, ‘axes.unicode_minus’: False }) # 创建图形和坐标轴对象,调整图形大小为 (10, 6) fig, ax = plt.subplots(figsize=(10, 6)) # 调整图形大小 # 定义颜色和纹理 colors = [‘navy’, ‘teal’, ‘mediumaquamarine’, ‘khaki’] hatches = [‘xx’, ”, ‘\\’, ‘//’] # 绘制堆叠条形图并添加纹理 bottom = np.zeros(len(data[“samples”])) for i, label in enumerate(data[“labels”]): if i < 3: values = [item[i] for item in data[“RMSE_values”]] # 绘制条形图,并应用颜色和纹理 bars = ax.bar(data[“samples”], values, bottom=bottom, color=colors[i], hatch=hatches[i], label=label, edgecolor=’black’, width=0.6) bottom += values # 更新底部位置以便堆叠下一个类别 # 设置坐标轴标签和标题 ax.set_xlabel(‘样本数’) ax.set_ylabel(‘RMSE (米)’) ax.set_title(‘纹理填充堆叠条形图’) # 添加图例 ax.legend(loc=’upper right’) # 设置网格和坐标轴范围 ax.grid(True, axis=’y’, linestyle=’–‘, alpha=0.7) ax.set_ylim(0, 1.5) # 显示图表 plt.show() # 关闭绘图窗口 plt.close()
  • 通过 Matplotlib,我们可以轻松地实现带填充纹理的堆叠图。这种图表不仅美观,还能提供丰富的信息。在实际应用中,你可以根据需要调整颜色、纹理、字体等参数,以满足不同的可视化需求。 到此这篇关于使用Python绘制带填充纹理的堆叠图的文章就介绍到这了,更多相关Python绘制堆叠图内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python绘制柱状图堆叠图完整代码 Python+matplotlib绘制饼图和堆叠图 Python实现渐变色的水平堆叠图 python+opencv实现堆叠图片 Python+matplotlib实现堆叠图的绘制
  • 目录
    • 一、安装 Matplotlib 库
    • 二、数据准备
    • 三、设置绘图风格和字体
    • 四、绘制堆叠条形图并添加纹理
    • 五、添加图表元素
    • 六、显示和保存图表
    • 七、效果展示
    • 八、完整代码展示
    • 九、总结

    在数据分析和可视化中,堆叠条形图是一种非常有用的工具,能够直观地展示不同类别在各个样本中的分布情况。而为堆叠图添加填充纹理,则可以让图表更加美观且富有层次感。今天,我们将通过 Python 的 Matplotlib 库来实现这种带填充纹理的堆叠图。

    在开始绘制图表之前,我们需要确保已经安装了 Matplotlib 库。如果你尚未安装 Matplotlib,可以通过【win】+【R】打开【运行】,并输入[cmd],点击确定,并输入以下命令进行安装:

    pip install matplotlib

    安装完成后,你就可以在 Python 脚本中导入并使用 Matplotlib 了。

    为了绘制堆叠图,我们需要准备一些数据。在本例中,我们使用一个 JSON 格式的数据结构来存储样本数、RMSE 值以及类别标签。以下是数据的具体格式:

    data = {
        "samples": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
        "RMSE_values": [
            [0.15, 0.2, 0.25],
            [0.3, 0.35, 0.3],
            [0.25, 0.3, 0.35],
            [0.2, 0.25, 0.3],
            [0.18, 0.22, 0.28],
            [0.2, 0.24, 0.29],
            [0.22, 0.26, 0.31],
            [0.19, 0.23, 0.32],
            [0.17, 0.21, 0.33],
            [0.16, 0.2, 0.34],
            [0.14, 0.19, 0.35],
            [0.13, 0.18, 0.36],
            [0.12, 0.17, 0.37]
        ],
        "labels": ["A", "B", "C", "D"]
    }

    其中:

    • samples 表示样本编号。
    • RMSE_values 是一个二维列表,每一行对应一个样本,每一列对应一个类别的值。
    • labels 是类别的标签。

    在绘制图表之前,我们需要设置合适的绘图风格和字体,以确保图表的美观性和可读性。Matplotlib 提供了多种预设的绘图风格,例如 seaborn-v0_8-colorblind,这种风格适合色盲用户,能够提供清晰的视觉效果。

    import matplotlib.pyplot as plt
    
    # 检查可用样式
    print("Available styles:", plt.style.available)
    
    # 设置绘图风格和字体
    plt.style.use('seaborn-v0_8-colorblind')  # 使用可用的样式
    plt.rcParams.update({
        'font.family': 'SimHei',  
        'font.size': 10,          
        'axes.unicode_minus': False  
    })

    接下来,我们将使用 Matplotlib 的bar方法来绘制堆叠条形图。为了实现纹理填充,我们需要为每个条形图指定 hatch 参数。以下是完整的代码实现:

    import numpy as np
    
    # 创建图形和坐标轴对象,调整图形大小为 (10, 6)
    fig, ax = plt.subplots(figsize=(10, 6))  # 调整图形大小
    
    # 定义颜色和纹理
    colors = ['navy', 'teal', 'mediumaquamarine', 'khaki']  # 定义每个类别的颜色
    hatches = ['xx', '', '\\', '//']  # 定义每个类别的纹理
    
    # 初始化底部位置
    bottom = np.zeros(len(data["samples"]))
    
    # 绘制堆叠条形图并添加纹理
    for i, label in enumerate(data["labels"]):
        if i < 3:  # 只有三个类别需要绘制,因为数据中只有三个值
            values = [item[i] for item in data["RMSE_values"]]  # 提取每个样本对应类别的值
            # 绘制条形图,并应用颜色和纹理
            bars = ax.bar(data["samples"], values, bottom=bottom, color=colors[i], hatch=hatches[i], label=label, edgecolor='black', width=0.6)
            bottom += values  # 更新底部位置以便堆叠下一个类别

    为了让图表更加完整和易于理解,我们需要添加坐标轴标签、标题、图例以及网格线。

    # 设置坐标轴标签和标题
    ax.set_xlabel('样本数')  # 设置x轴标签
    ax.set_ylabel('RMSE (米)')  # 设置y轴标签
    ax.set_title('纹理填充堆叠条形图')  # 设置图表标题为中文
    # 添加图例
    ax.legend(loc='upper right')  # 设置图例位置
    # 设置网格和坐标轴范围
    ax.grid(True, axis='y', linestyle='--', alpha=0.7)  # 添加网格线
    ax.set_ylim(0, 1.5)  # 设置y轴范围

    最后,我们使用 plt.show() 方法来显示图表。如果需要保存图表,可以使用 plt.savefig() 方法。

    # 显示图表
    plt.show()
    # 关闭绘图窗口
    plt.close()

    运行上述代码后,你将得到一个带有填充纹理的堆叠条形图。每个条形图的纹理和颜色都清晰可见,能够直观地展示不同类别在各个样本中的分布情况。

    import matplotlib.pyplot as plt
    import numpy as np
    # 从JSON格式的数据中提取需要绘制的图表信息
    data = {
        "samples": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
        "RMSE_values": [
            [0.15, 0.2, 0.25],
            [0.3, 0.35, 0.3],
            [0.25, 0.3, 0.35],
            [0.2, 0.25, 0.3],
            [0.18, 0.22, 0.28],
            [0.2, 0.24, 0.29],
            [0.22, 0.26, 0.31],
            [0.19, 0.23, 0.32],
            [0.17, 0.21, 0.33],
            [0.16, 0.2, 0.34],
            [0.14, 0.19, 0.35],
            [0.13, 0.18, 0.36],
            [0.12, 0.17, 0.37]
        ],
        "labels": ["A", "B", "C", "D"]
    }
    # 检查可用样式
    print("Available styles:", plt.style.available)
    # 设置绘图风格和字体
    plt.style.use('seaborn-v0_8-colorblind')  # 使用可用的样式
    # 设置支持中文的字体
    plt.rcParams.update({
        'font.family': 'SimHei',  
        'font.size': 10,          
        'axes.unicode_minus': False  
    })
    # 创建图形和坐标轴对象,调整图形大小为 (10, 6)
    fig, ax = plt.subplots(figsize=(10, 6))  # 调整图形大小
    # 定义颜色和纹理
    colors = ['navy', 'teal', 'mediumaquamarine', 'khaki']  
    hatches = ['xx', '', '\\', '//']  
    # 绘制堆叠条形图并添加纹理
    bottom = np.zeros(len(data["samples"]))  
    for i, label in enumerate(data["labels"]):
        if i < 3:  
            values = [item[i] for item in data["RMSE_values"]]  
            # 绘制条形图,并应用颜色和纹理
            bars = ax.bar(data["samples"], values, bottom=bottom, color=colors[i], hatch=hatches[i], label=label, edgecolor='black', width=0.6)
            bottom += values  # 更新底部位置以便堆叠下一个类别
    # 设置坐标轴标签和标题
    ax.set_xlabel('样本数')  
    ax.set_ylabel('RMSE (米)')  
    ax.set_title('纹理填充堆叠条形图')  
    # 添加图例
    ax.legend(loc='upper right')  
    # 设置网格和坐标轴范围
    ax.grid(True, axis='y', linestyle='--', alpha=0.7)  
    ax.set_ylim(0, 1.5)  
    # 显示图表
    plt.show()
    # 关闭绘图窗口
    plt.close()

    通过 Matplotlib,我们可以轻松地实现带填充纹理的堆叠图。这种图表不仅美观,还能提供丰富的信息。在实际应用中,你可以根据需要调整颜色、纹理、字体等参数,以满足不同的可视化需求。

    到此这篇关于使用Python绘制带填充纹理的堆叠图的文章就介绍到这了,更多相关Python绘制堆叠图内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python绘制柱状图堆叠图完整代码
    • Python+matplotlib绘制饼图和堆叠图
    • Python实现渐变色的水平堆叠图
    • python+opencv实现堆叠图片
    • Python+matplotlib实现堆叠图的绘制

    站内搜索