Matplotlab可视化学习笔记(二):如何绘制柱状图

简介: 使用Matplotlib库在Python中绘制柱状图的教程,包括基本的柱状图绘制和多条柱状图的绘制方法。

1.安装matplotlib

matplotlib是一个非常实用的画柱状图的tool,通过pip install matplotlib直接安装即可

2.具体代码

import matplotlib.pyplot as plt
import inspect
yolov4_time,yolo_time,ssdface_time, libface_time=0.1,0.5,0.3,0.2
waste_times = (yolov4_time,yolo_time,ssdface_time, libface_time)

labels = []
def retrieve_name(var):
    callers_local_vars = inspect.currentframe().f_back.f_locals.items()
    return [var_name for var_name, var_val in callers_local_vars if var_val is var]

for data in waste_times:
    labels.append(retrieve_name(data)[0].replace('_time', ''))

plt.rcParams['font.family'] = 'SimHei'  # 设置中文解决matplotlib中文乱码问题
x = list(range(len(waste_times)))
plt.bar(x, waste_times, width=0.5, color='red', label='耗时比较', tick_label=labels)
for a, b in zip(x, waste_times):
    plt.text(a, b, '%.1f' % b, ha='center', va='bottom', fontsize=10)  # 添加数据标签

plt.xlabel("模型")
plt.ylabel("时间")

plt.legend()
plt.show()

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

3.绘制多条柱状图

代码:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体 SimHei为黑体
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负

Log_015 = np.array([0.039, 0.048, 0.951])
Log_043 = np.array([0.012, 0.014, 0.997])
Les_015 = np.array([0.031, 0.045, 0.963])
Les_043 = np.array([0.028, 0.031, 0.983])

name_list = ['MAE', 'RMSE', 'R2']
x = list(range(len(name_list)))  #横坐标的名
width = 0.2  #直方图的柱宽
colors = ['b','g'] #直方图的颜色
plt.figure(figsize=(8,6)) #
plt.ylim([0,1])  #纵坐标的范围,横坐标的话改成xlim
plt.grid(zorder=0,alpha=0.4)  #图层在最底下,网格的透明度
# plt.ylabel("Accuracy(%)")  #纵轴标签
plt.xlabel("不同评价指标")  #横轴标签
plt.bar(x,Log_015,width=width,label='Log_015',tick_label = name_list,fc='y',zorder=10,edgecolor='black')
#x表示横坐标,multi_unrevoke是纵坐标的值,width是柱宽,label是图例代表这个柱表示什么,tick_label是横坐标对应的标签,fc是颜色,zorder设置的比网格大,代表柱状图在网格之上不会被网格遮盖,edgecolor表示的柱状图边长的颜色,设置为黑色描个边
for i in range(len(x)):
    x[i] = x[i]+width+0.05   #这里设置的是第二个柱对应的横坐标,因为这里想让两个柱状图之间有点空隙,就让横坐标右移了一些
plt.bar(x,Log_043,width=width,label="Log_043",tick_label = name_list,fc='r',zorder=10,edgecolor='black')

for i in range(len(x)):
    x[i] = x[i]+width+0.05   #这里设置的是第三个柱对应的横坐标,因为这里想让两个柱状图之间有点空隙,就让横坐标右移了一些
plt.bar(x,Les_015,width=width,label="Les_015",tick_label = name_list,fc='b',zorder=10,edgecolor='black')

for i in range(len(x)):
    x[i] = x[i]+width+0.05   #这里设置的是第三个柱对应的横坐标,因为这里想让两个柱状图之间有点空隙,就让横坐标右移了一些
plt.bar(x,Les_043,width=width,label="Les_043",tick_label = name_list,fc='g',zorder=10,edgecolor='black')

xx = [1,2,3]
plt.xticks([index -0.6 for index in xx], name_list, rotation='horizontal') #这里是因为x轴的标签不太居中,所以在这里通过index设置一下看能不能居中,rotation是标签的方向,也可以设置成垂直之类的
# plt.xticks([index -0.875 for index in xx], name_list, rotation='horizontal') #这里是因为x轴的标签不太居中,所以在这里通过index设置一下看能不能居中,rotation是标签的方向,也可以设置成垂直之类的
plt.legend()
# plt.title("Accuracy of Different Datasets without Revoking Requests",fontsize=14)
plt.show()

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

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
数据采集 JSON JavaScript
Python爬虫案例:抓取猫眼电影排行榜
python爬取猫眼电影排行榜数据分析,实战。(正则表达式,xpath,beautifulsoup)【2月更文挑战第11天】
899 2
Python爬虫案例:抓取猫眼电影排行榜
|
人工智能 开发者
解决HuggingFace模型下载难题:AI快站的高效加速服务
在AI研发领域,获取优质模型资源是关键。国内开发者常因海外服务器导致的下载困难而苦恼,尤其是大型模型下载更是耗时且充满挑战。AI快站(aifasthub.com)作为huggingface镜像网站,提供了高效的加速下载服务。它不仅解决了huggingface大模型下载的速度问题,还支持断点续传,保证下载连续性。此外,AI快站还提供全面及时更新的模型资源,是国内AI开发者的理想选择。
2597 0
|
人工智能 算法 安全
基于YOLOv8的交通车辆实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
基于YOLOv8的交通车辆实时检测系统,使用5830张图片训练出有效模型,开发了Python和Pyside6的GUI界面系统,支持图片、视频和摄像头实时检测,具备模型权重导入、检测置信度调节等功能,旨在提升道路安全和改善交通管理。
3222 1
基于YOLOv8的交通车辆实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
|
9月前
|
机器学习/深度学习 缓存 自然语言处理
30_情感分析变体详解:从极性到细粒度 - 深度解析与教学
情感分析(Sentiment Analysis),又称意见挖掘(Opinion Mining),是自然语言处理(NLP)领域的核心任务之一,旨在自动识别和提取文本中的情感信息。随着社交媒体的普及和用户生成内容的爆炸式增长,情感分析技术在商业决策、舆情监测、产品开发等领域发挥着越来越重要的作用。
800 1
|
机器学习/深度学习 自然语言处理 PyTorch
使用Python实现循环神经网络(RNN)的博客教程
使用Python实现循环神经网络(RNN)的博客教程
1444 1
|
人工智能 自然语言处理 API
用自然语言控制电脑,字节跳动开源 UI-TARS 的桌面版应用!内附详细的安装和配置教程
UI-TARS Desktop 是一款基于视觉语言模型的 GUI 代理应用,支持通过自然语言控制电脑操作,提供跨平台支持、实时反馈和精准的鼠标键盘控制。
6998 17
用自然语言控制电脑,字节跳动开源 UI-TARS 的桌面版应用!内附详细的安装和配置教程
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
1883 0
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
1817 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)