通过Python绘制不同数据类型适合的可视化图表

news/2024/9/14 9:45:04/ 标签: 信息可视化, 数据分析, python, matplotlib

在数据可视化中,对于描述数值变量与数值变量之间的关系常见的有散点图和热力图,以及描述数值变量与分类变量之间的关系常见的有条形图,饼图和折线图,可以通过使用Python的matplotlibseaborn库来绘制图表进行可视化表达,接下来分别对这些类型进行举例演示。

一:数值变量与数值变量

1:散点图 (Scatter Plot) - 展示两个数值变量之间的关系

使用Python的Matplotlib库来绘制这个散点图。首先,我会生成一些模拟数据来代表身高和体重,然后使用Matplotlib绘制散点图。

python">import matplotlib.pyplot as plt
import numpy as np# 生成模拟数据
np.random.seed(0)
height = np.random.normal(170, 10, 100)  # 身高数据,平均身高170cm,标准差10cm
weight = np.random.normal(70, 15, 100)   # 体重数据,平均体重70kg,标准差15kg# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(height, weight, color='blue', alpha=0.5)
plt.title('身高与体重的关系')
plt.xlabel('身高 (cm)')
plt.ylabel('体重 (kg)')
plt.grid(True)
plt.show()

结果如下:

这是一个简单的散点图示例,展示了身高和体重之间的关系。在这个图中,每个点代表一个数据点,其横坐标表示身高,纵坐标表示体重。通过这个图表,我们可以初步观察身高和体重之间的分布模式。

2:热力图 (Heatmap) - 展示两个数值变量的联合分布

要绘制一个热力图,我们需要以下信息:

  1. 数据集:热力图通常用于展示二维数据集,其中每个数据点都有一个值,这个值将被映射到颜色上。
  2. 颜色映射:确定如何将数据值映射到不同的颜色。
  3. 标题和标签:为图表设定一个清晰的标题,以及X轴和Y轴的标签,以便于理解。

基于以上几点,我将创建一个简单的热力图示例。假设我们有一个简单的二维数据集,我们想要通过热力图来展示这个数据集的值分布。

python">import matplotlib.pyplot as plt
import numpy as np# 生成模拟数据
np.random.seed(0)
data = np.random.rand(10, 10)  # 10x10的二维数据集# 绘制热力图
plt.figure(figsize=(8, 6))
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar(label='值')
plt.title('热力图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

结果如下:

这是一个简单的热力图示例,展示了10x10二维数据集的值分布。在这个图中,每个方格代表数据集中的一个数据点,其颜色深浅表示该数据点的值大小。颜色越深,值越大;颜色越浅,值越小。

二:类别变量与数值变量

1:堆叠条形图 (Stacked Bar Chart) - 展示多个类别变量的数值分布

堆叠条形图是一种特殊的条形图,其中每个条形代表多个数据系列的总和,每个系列以不同的颜色堆叠在一起。要绘制一个堆叠条形图,我们需要以下信息:

  1. 数据集:包含多个数据系列的二维数据集,其中每个系列都有一个或多个数据点。
  2. 类别标签:用于X轴的标签,表示每个条形代表的类别。
  3. 系列标签:用于图例,表示每个数据系列的名称。

基于以上几点,我将创建一个简单的堆叠条形图示例。假设我们有一个关于不同产品的销售数据,包括三个季度的销售额。

python">import matplotlib.pyplot as plt
import numpy as np# 生成模拟数据
np.random.seed(0)
products = ['产品A', '产品B', '产品C', '产品D']
q1_sales = np.random.randint(50, 100, len(products))
q2_sales = np.random.randint(50, 100, len(products))
q3_sales = np.random.randint(50, 100, len(products))# 计算堆叠的底部位置
bar_width = 0.25
index = np.arange(len(products))# 绘制堆叠条形图
plt.figure(figsize=(10, 6))
plt.bar(index, q1_sales, bar_width, label='Q1')
plt.bar(index, q2_sales, bar_width, bottom=q1_sales, label='Q2')
plt.bar(index, q3_sales, bar_width, bottom=q1_sales+q2_sales, label='Q3')# 设置图表标题和标签
plt.title('产品季度销售数据堆叠条形图')
plt.xlabel('产品')
plt.ylabel('销售额')
plt.xticks(index, products)
plt.legend()plt.show()

结果如下:

这是一个简单的堆叠条形图示例,展示了不同产品在三个季度的销售额。在这个图中,每个产品对应一个条形,每个条形的不同颜色部分代表不同季度的销售额。通过这个图表,我们可以直观地比较不同产品在不同季度的销售情况。

2:饼图 (Pie Chart) - 展示一个或多个类别变量的分布

要绘制一个饼图,我们需要以下信息:

  1. 数据集:一个包含各个部分数值的数据集。
  2. 标签:每个部分对应的标签,用于在饼图上标记。
  3. 颜色:可选,为每个部分指定颜色。

基于以上几点,我将创建一个简单的饼图示例。假设我们有一个关于不同水果销售量的数据集,我们想要通过饼图来展示每种水果的销售比例。

python">import matplotlib.pyplot as plt# 生成模拟数据
fruits = ['苹果', '香蕉', '橙子', '葡萄', '草莓']
sales = [30, 25, 20, 15, 10]# 绘制饼图
plt.figure(figsize=(8, 6))
plt.pie(sales, labels=fruits, autopct='%1.1f%%', startangle=140)
plt.title('水果销售比例饼图')
plt.show()

结果如下:

这是一个简单的饼图示例,展示了不同水果的销售比例。在这个图中,每种水果的销售量被表示为一个扇形,其大小对应于该水果的销售比例。通过这个图表,我们可以直观地看到各种水果在总销售量中的占比。

3:折线图 (Line Chart) - 展示数值变量随时间或有序类别变量的变化

要绘制一个折线图,我们需要以下信息:

  1. 数据集:至少包含两个变量的数据集,通常一个用于X轴,一个用于Y轴。
  2. 标题和标签:为图表设定一个清晰的标题,以及X轴和Y轴的标签,以便于理解。
  3. 线条样式和颜色:可选,用于区分不同的数据系列。

基于以上几点,我将创建一个简单的折线图示例。假设我们有一个关于某城市一周内每天温度的数据集,我们想要通过折线图来展示这一周温度的变化趋势。

python">import matplotlib.pyplot as plt
import numpy as np# 生成模拟数据
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
temperatures = np.random.uniform(15, 30, len(days))  # 温度数据,假设在15°C到30°C之间# 绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(days, temperatures, marker='o', color='b')
plt.title('一周内每天温度变化折线图')
plt.xlabel('星期')
plt.ylabel('温度 (°C)')
plt.grid(True)
plt.show()

结果如下:

这是一个简单的折线图示例,展示了某城市一周内每天的温度变化。在这个图中,横轴表示星期,纵轴表示温度。每个点代表对应星期的温度,点与点之间的线条显示了温度的变化趋势。

以上就是通过使用Python的matplotlib库来绘制图表描述数值变量与数值变量之间的关系和数值变量与分类变量之间的关系。

点下关注,分享更多有关AI,数据分析和量化金融相关的实用教程和项目。


http://www.ppmy.cn/news/1517122.html

相关文章

超详细!!!uniapp通过unipush全流程实现app消息推送

云风网 云风笔记 云风知识库 一、HBuilder新建APP项目 二、配置推送服务 1、登录Dcloud开发者中心开发者中心,查看我的应用 2、生成云端证书 3、创建平台信息 4、配置推送服务信息 这里需要关联服务空间,可以申请免费服务空间进行测试 三、代码配置 1…

Java笔试面试题AI答之线程(24)

文章目录 139. 简述为什么 wait(), notify()和 notifyAll()必须在同步方法或 者同步块中被调用?140. 简述为什么 Thread 类的 sleep()和 yield ()方法是静态的 ?1. sleep() 方法2. yield() 方法总结 141. 简述同步方法和同步块,哪个是更好的选…

hydra密码爆破工具详细使用教程

Hydra是一个强大的密码爆破工具,可以用来测试网络系统的弱口令。下面是使用Hydra的基本教程: 1. 安装Hydra 可以从Hydra的官方网站(https://github.com/vanhauser-thc/thc-hydra)下载最新版本的Hydra,并按照安装说明进…

spring boot 配置监听多端口

如何实现Spring Boot配置监听多端口 1. 概述 在Spring Boot应用中,有时候需要监听多个端口,比如同时监听HTTP和HTTPS端口。本文将介绍如何实现在Spring Boot应用中配置监听多端口。 2. 流程表格 步骤 操作 1 添加依赖 2 创建多端口配置类 3 …

turtlebot 测试 Gazebo Harmonic ROS Jazzy

源码移植后理论上支持所有Gazebo和ROS版本,但花费时间较多。 只推荐学习Gazebo 经典版和Gazebo Harmonic以及之后版本。 在中间的过渡版本,不推荐学习。 Gazebo经典版包括Gazebo 7 Gazebo 9 Gazebo 11。 Gazebo Harmonic 和 ROS2 jazzy 安装和测试-CSDN博…

vue3+ts el-table 鼠标移动到某单元格内时就显示 tooltip

在Vue 3和Element Plus中&#xff0c;要在鼠标移动到表格某个单元格上时显示tooltip&#xff0c;可以使用el-tooltip组件&#xff0c;并结合表格的cell-mouse-enter和cell-mouse-leave事件。 <template> <el-table :data"tableData" cell-mouse-e…

深度学习-批量与动量【Datawhale X 李宏毅苹果书 AI夏令营】

实际工程中使用批量和动量可以对抗鞍点或局部最小值。 批量&#xff1a; 在计算梯度的时候不会用所有数据计算损失。类比我们考试复习时&#xff0c;一个单元一个单元的知识点输入&#xff0c;所有单元都输入就是一整个轮回。而这一个单元用深度学习的术语来说就是批量&#x…

CSRF 概念及防护机制

概述 CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;即跨站请求伪造&#xff0c;是一种网络攻击方式。在这种攻击中&#xff0c;恶意用户诱导受害者在不知情的情况下执行某些操作&#xff0c;通常是利用受害者已经登录的身份&#xff0c;向受害者信任的…

【精选】基于数据可视化的智慧社区内网平台

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

华为AC旁挂二层组网配置详解:从DHCP部署到无线业务配置,完成网络搭建

组网需求 AC组网方式&#xff1a;旁挂二层组网。 DHCP部署方式&#xff1a; AC作为DHCP服务器为AP分配IP地址。 防火墙作为DHCP服务器为STA分配IP地址。 业务数据转发方式&#xff1a;直接转发。 网络拓扑图 对于旁边路直接转发&#xff0c;优点就是数据流量不经过AC&…

决策树和随机森林介绍

hello大家好&#xff0c;俺是没事爱瞎捣鼓又分享欲爆棚的叶同学&#xff01;&#xff01;&#xff01;今天我来给大家介绍一下决策树与随机森林&#xff0c;说起随机森林俺还有件很久远的丑事&#xff0c;之前有关课的结课作业就是用模型训练并预测&#xff0c;那时我比较天真&…

OpenCV(第二关--读取图片和摄像头)实例+代码

以下内容&#xff0c;皆为原创&#xff0c;制作不易&#xff0c;感谢大家的关注和点赞。 一.读取图片 我们来读取图片&#xff0c;当你用代码读取后&#xff0c;可能会发现。怎么跟上传的图片颜色有些许的不一样。因为OpenCV的颜色通道是BGR&#xff0c;而我们平常用的matplotl…

百日筑基第六十天-学习一下Tomcat

百日筑基第六十天-学习一下Tomcat 一、Tomcat 顶层架构 Tomcat 中最顶层的容器是 Server&#xff0c;代表着整个服务器&#xff0c;从上图中可以看出&#xff0c;一个 Server可以包含至少一个 Service&#xff0c;用于具体提供服务。Service 主要包含两个部分&#xff1a;Conn…

Flask SQLALchemy 的使用

Flask SQLALchemy 的使用 安装 Flask-SQLAlchemy配置 Flask-SQLAlchemy定义模型创建数据库和表插入和查询数据更新和删除数据迁移数据库总结Flask-SQLAlchemy 是一个 Flask 扩展,它简化了 Flask 应用中 SQLAlchemy 的使用。SQLAlchemy 是一个强大的 SQL 工具包和对象关系映射(…

【AI智能体】在AI浪潮中,程序员如何在这复杂的环境中生存下去

在这个瞬息万变的时代&#xff0c;人工智能&#xff08;AI&#xff09;如同一阵狂风&#xff0c;席卷了各行各业&#xff0c;尤其是程序员这一群体。面对AI的迅猛发展&#xff0c;程序员们不仅要适应新的技术潮流&#xff0c;更要在这场变革中找到自己的立足之地。如何在AI浪潮…

Shader笔记:光照与阴影1

引&#xff1a;旋转动画&#xff08;三角函数&#xff09; float3 rotationY(float3 vertex){float c cos(_Time.y*_Speed);float s sin(_Time.y*_Speed);float3x3 m {c,0,s,0,1,0,-s,0,c};return mul(m,vertex); } v2f vert (a2v v) {v2f o;o.pos UnityObjectToClipPos(r…

Charles苹果手机https抓包

1、电脑设置Charles代理端口 1)设置代理端口 Proxy-》Proxying Settings-》HTTP Proxy 设置端口 2)设置监控的代理地址 Proxy-》SSL Proxying Settings 添加Add允许所有地址*.* 2、电脑导入Charles的ssl证书 3、电脑查看Charles的IP地址和端口 4、手机无线wifi配置代理 5、手…

Vue3常见知识**MS【4】

一、vue2和vue3的区别 1、数据绑定原理不同 vue2&#xff1a;数据绑定是利用ES5的一个API&#xff1a;Object.definePropert() 对数据进行劫持&#xff0c;结合发布订阅模式的方式来实现的。 vue3&#xff1a;使用了ES6的Proxy API对数据代理。相比vue2.x&#xff0c;使用proxy…

【Java设计模式】Builder模式:在Java中清晰构建自定义对象

文章目录 【Java设计模式】Builder模式&#xff1a;在Java中清晰构建自定义对象一、概述二、Builder设计模式的意图三、Builder模式的详细解释及实际示例四、Java中Builder模式的编程示例五、Builder模式类图六、Java中何时使用Builder模式七、Builder模式Java教程八、Builder模…

【Linux篇】Linux的压缩与解压

1. 压缩格式 市面上有非常多的压缩格式&#xff1a; zip格式&#xff1a;Linux&#xff0c;win&#xff0c;MacOS&#xff0c;常用7zip&#xff1a;win常用rar&#xff1a;win常用tar&#xff1a;Linux&#xff0c;MacOS常用gzip&#xff1a;Linux&#xff0c;MacOS常用 如何…