精通Python数据可视化:Matplotlib柱状图、直方图与饼状图实战解析

精通Python数据可视化:Matplotlib柱状图、直方图与饼状图实战解析

引言

在数据分析和科学研究中,数据可视化扮演着至关重要的角色。Matplotlib是Python中一个广泛使用的绘图库,它提供了丰富的绘图功能和灵活的定制选项。本文将详细介绍如何使用Matplotlib绘制柱状图、直方图和饼状图,通过具体的代码示例帮助读者掌握这些图表的绘制方法。

一、柱状图(Bar Chart)

柱状图是一种用矩形条表示数据的图表,它主要用于展示不同类别的比较关系。Matplotlib提供了bar()函数来绘制柱状图。

1. 基本的竖直柱状图
import matplotlib.pyplot as plt
import numpy as np# 数据准备
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 90]# 绘制柱状图
plt.figure(figsize=(10, 6))  # 设置图像大小
plt.bar(categories, values, color='skyblue')  # 绘制竖直柱状图
plt.xlabel('Category')  # X轴标签
plt.ylabel('Values')  # Y轴标签
plt.title('Basic Vertical Bar Chart')  # 图表标题
plt.grid(axis='y', alpha=0.5)  # 添加网格线
plt.show()
2. 同位置多柱状图

同位置多柱状图用于展示同一类别下不同指标的比较。

# 数据准备
categories = ['Norway', 'Germany', 'China', 'USA', 'Sweden']
gold = [16, 12, 9, 8, 8]
silver = [8, 10, 4, 10, 5]
bronze = [13, 5, 2, 7, 5]# 柱状图宽度
bar_width = 0.3# 计算每个柱状图的起始位置
index = np.arange(len(categories))
gold_bars = index
silver_bars = [x + bar_width for x in index]
bronze_bars = [x + bar_width * 2 for x in index]# 绘制柱状图
plt.figure(figsize=(10, 6))
plt.bar(gold_bars, gold, width=bar_width, label='Gold', color='gold')
plt.bar(silver_bars, silver, width=bar_width, label='Silver', color='silver')
plt.bar(bronze_bars, bronze, width=bar_width, label='Bronze', color='brown')# 添加X轴标签和图例
plt.xlabel('Country')
plt.ylabel('Medals')
plt.title('Medals Won by Countries')
plt.xticks([r + bar_width for r in range(len(categories))], categories)
plt.legend()
plt.show()
3. 堆叠柱状图

堆叠柱状图用于展示同一类别下不同组成部分的总和。

# 数据准备
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4']
values1 = [23, 34, 45, 56]
values2 = [12, 23, 34, 45]# 绘制堆叠柱状图
plt.figure(figsize=(10, 6))
plt.bar(categories, values1, label='Part 1', color='skyblue')
plt.bar(categories, values2, bottom=values1, label='Part 2', color='lightcoral')# 添加标签和图例
plt.xlabel('Category')
plt.ylabel('Values')
plt.title('Stacked Bar Chart')
plt.legend()
plt.show()
二、直方图(Histogram)

直方图是一种特殊的条形图,用于表示连续变量的分布。Matplotlib提供了hist()函数来绘制直方图。

# 数据准备
data = np.random.randn(1000)  # 生成1000个正态分布随机数# 绘制直方图
plt.figure(figsize=(10, 6))
plt.hist(data, bins=30, color='skyblue', alpha=0.7, edgecolor='black')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Normally Distributed Data')
plt.grid(axis='y', alpha=0.5)
plt.show()
三、饼状图(Pie Chart)

饼状图是一种使用扇形区域来表示数据比例的图表。Matplotlib提供了pie()函数来绘制饼状图。

# 数据准备
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0)  # 只将第一个扇形区域突出显示# 绘制饼状图
plt.figure(figsize=(8, 8))
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.axis('equal')  # 确保饼图是圆的
plt.title('Pie Chart Example')
plt.show()
结论

通过本文的详细介绍和代码示例,希望读者能够掌握使用Matplotlib绘制柱状图、直方图和饼状图的方法。这些图表在数据分析和可视化中非常常用,掌握它们的绘制技巧将有助于更好地理解和展示数据。在实际应用中,读者可以根据具体需求调整图表的参数和样式,以达到最佳的视觉效果和数据分析目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 可以直接在图像界面打开命令行吗

是的,Ubuntu(以及其他许多Linux发行版)允许用户直接在图形界面(GUI)中打开命令行界面。这通常通过打开一个终端模拟器应用程序来实现,该应用程序提供了一个命令行窗口,用户可以在其中输入和执行…

修改文件的默认打开方式

修改文件的默认打开方式 选中文件,右击,选择属性,如图然后点击更改,选择想要的打开方式,再依次点击 应用、保存 即可,如图

Linux 环境下整体备份迁移 Docker 镜像及数据教程

1. 介绍 本教程将引导您如何在 Linux 环境下备份和迁移 Docker 镜像及其数据。我们将逐步介绍相关步骤,包括 Docker 镜像的导出和导入、数据卷的备份和恢复等。通过本教程,您将能够轻松掌握 Docker 容器的迁移操作。 2. 前置准备 在开始之前&#xff…

Redis中数据分片与分片策略

概述 数据分片是一种将数据分割并存储在多个节点上的技术,可以有效提高系统的扩展性和性能。在Redis中,数据分片主要用于解决单个实例存储容量和性能瓶颈的问题。通过将数据分散存储到多个Redis节点中,可以将负载均衡到不同的服务器上&#…

Visual Studio使用——在vs中给vb.net项目添加新的窗口:新建的方式、添加已有窗口的方式

目录 引出Visual Studio使用vb添加新的窗体自定义代码片段vs显示所有文件 总结Idea安装和使用0.Java下载 和 IDEA工具1.首次新建项目2.隐藏文件不必要显示文件3.目录层级设置4.Settings设置选择idea的场景提示代码不区分大小写 取消git的代码作者显示 引出 Visual Studio使用—…

基于Vue CLI 3构建Vue3项目(Vue2也可参考)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Android Framework学习笔记(4)----Zygote进程

Zygote的启动流程 Init进程启动后,会加载并执行init.rc文件。该.rc文件中,就包含启动Zygote进程的Action。详见“RC文件解析”章节。 根据Zygote对应的RC文件,可知Zygote进程是由/system/bin/app_process程序来创建的。 app_process大致处…

PHP手边酒店多商户版平台小程序系统源码

🏨【旅行新宠】手边酒店多商户版小程序,一键解锁住宿新体验!🛌 🌈【开篇:旅行新伴侣,尽在掌握】🌈 还在为旅行中的住宿选择而纠结吗?是时候告别繁琐的搜索和比价过程&a…

MT6985(天玑9200)芯片性能参数_MTK联发科旗舰5G移动平台处理器

MT6985天玑 9200 旗舰移动平台拥有专业级影像、沉浸式游戏和先进移动显示技术,以及更快捷、覆盖更广的 5G 和 支持 Wi-Fi 7 连接,具有高性能、高能效、低功耗表现。率先采用 Armv9 性能核,全部支持纯 64 位应用,开启高能效架构设计…

【数据库学习】java数据库开发:sql解析之jsqlparser

1,概念 1) SQL 解析器 用于处理 SQL 查询语句的解析和分析。 场景: 数据库客户端开发,解析用户输入的sql语法并执行。自定义sql解析和执行逻辑。 标准的数据库接口(如 JDBC)无法完全满足需求时&#xff…

音频数据集

1 多语言 Mozilla Common Voice 下载地址:https://voice.mozilla.org/data 时长:1965小时(目前为止) 最早2017年发布,持续更新,该基金会表示,通过 Common Voice 网站和移动应用,他们…

搞定前端面试题——ES6同步与异步机制、async/await的使用以及Promise的使用!!!

文章目录 同步和异步async/awaitPromisePromise的概念 同步和异步 ​ 同步:代码按照编写顺序逐行执行,后续的代码必须等待当前正在执行的代码完成之后才能执行,当遇到耗时的操作(如网络请求等)时,主线程会…

Java二十三种设计模式-抽象工厂模式(3/23)

抽象工厂模式:复杂系统的灵活构建者 引言 在软件开发中,抽象工厂模式是一种提供接口以创建相关或依赖对象族的创建型设计模式。这种模式允许客户端使用一个共同的接口来创建不同的产品族,而无需指定具体类。 基础知识,java设计模…

SpringBoot日常:常用数据类型比较

文章目录 前言基本类型引用类型date类型比较LocalDate类型比较LocalDateTime类型比较Bigdecimal类型比较对象类型比较 前言 在Java中,我们一般分为基本类型的比较和引用类型的比较,下面按照这两个大分类梳理一下日常用到的类型比较 基本类型 基本数据类型比较主要…

算法 —— LRU算法

算法 —— LRU算法 LRULRU算法的工作原理:实现方法:性能考虑: 模拟过程splice函数对于std::list和std::forward_list基本语法:功能描述: 示例:注意事项: 如果大家已经学习过了Cache的替换算法和…

ElementUIV12相关使用方法

今日内容 零、 复习昨日 零、 复习昨日 一、Element UI Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库 官网: https://element.eleme.cn/#/zh-CN Element Plus,基于 Vue 3,面向设计师和开发者的组件库 官网: htt…

C语言--递归

曾经有一个段子:上大学时,我们的c语言老师说:学c时,如果有50%的同学死在了循环上面,那么就有90%的同学死在了递归上面。接下来,就来看看递归是怎么个事? 一.递归的介绍 递归是指一个函数直接或…

Spring中的@Transactional什么时候会失效?

在Spring中,Transactional注解用于声明式事务管理,它可以使方法在事务上下文中执行。然而,Transactional注解有时会失效,这通常是由于以下几种情况: 1. 非public方法: - Transactional注解默认只能应用…

跨平台WPF音乐商店应用程序

目录 一 简介 二 设计思路 三 源码 一 简介 支持在线检索音乐,支持实时浏览当前收藏的音乐及音乐数据的持久化。 二 设计思路 采用MVVM架构,前后端分离,子界面弹出始终位于主界面的中心。 三 源码 视窗引导启动源码: namesp…

MySQL(8)事务

目录 1.事务; 1.事务: 1.1 如果CURD不加限制会这么样子? 可能造成数据同时被修改, 数据修改的结果是未知的.(可以想一下之前的抢票线程问题) 1.2 事务概念: 事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功&#xff0…