当前位置: 首页 > news >正文

图解未来:数据可视化引领智慧决策时代

图表和数据可视化在数据分析中的关键作用

引言:
在现代数据科学中,数据可视化扮演着至关重要的角色。通过图表和可视化工具,我们能够更直观、更有效地理解数据的分布、趋势和关联性。本文将深入讨论三个主要的数据可视化工具:matplotlibseabornplotly,它们分别代表了基础的绘图库、更高级的统计图表工具以及交互式图表的创造者。

文章目录

  • 图表和数据可视化在数据分析中的关键作用
      • Matplotlib:经典而灵活
        • 1. **介绍:**
        • 2. **基础绘图:**
        • 3. **子图和布局:**
        • 4. **3D绘图:**
        • 5. **应用示例:**
        • 6. **自定义样式:**
        • 7. **结语:**
      • Seaborn:统计数据的艺术
        • 1. **介绍:**
        • 2. **美观的默认设置:**
        • 3. **强化的绘图功能:**
        • 4. **使用示例:**
        • 5. **结语:**
      • Plotly:交互式的未来
        • 1. **介绍:**
        • 2. **交互式图表:**
        • 3. **多种图表类型:**
        • 4. **Web集成和Dash框架:**
        • 5. **结语:**

Matplotlib:经典而灵活

1. 介绍:

Matplotlib是Python中最经典、最灵活的绘图库之一,被广泛用于数据可视化。其设计理念是提供丰富的绘图选项,使用户能够创建高质量、定制化的静态图表。

2. 基础绘图:

Matplotlib支持多种基础绘图,例如线图、散点图、柱状图等。通过简单的API,用户可以轻松自定义图表的各个元素,包括颜色、线型、标签等。

import matplotlib.pyplot as plt# 创建简单的折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]plt.plot(x, y, label='折线图')
plt.scatter(x, y, color='red', label='散点图')
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('Matplotlib示例')
plt.legend()plt.show()
3. 子图和布局:

Matplotlib允许用户创建包含多个子图的复杂布局,通过subplots函数可以轻松实现。这使得用户能够在一个图中展示多个相关的数据集。

import matplotlib.pyplot as plt# 创建包含两个子图的布局
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))# 子图1:线图
axes[0].plot([1, 2, 3, 4, 5], [2, 4, 6, 8, 10])
axes[0].set_title('线图')# 子图2:柱状图
axes[1].bar(['A', 'B', 'C', 'D', 'E'], [3, 7, 2, 5, 8], color='orange')
axes[1].set_title('柱状图')plt.show()
4. 3D绘图:

Matplotlib支持3D绘图,可以呈现立体数据。通过mplot3d工具集,用户可以创建3D散点图、曲面图等。

import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d# 创建3D散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
z = [3, 5, 7, 9, 11]ax.scatter(x, y, z, c='r', marker='o')ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')plt.show()
5. 应用示例:

除了基本的线图和散点图,Matplotlib可以用于创建直方图、饼图、雷达图等多种图表,满足不同数据呈现需求。

import matplotlib.pyplot as plt# 创建饼图
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', startangle=140)
plt.axis('equal')  # 保持圆形plt.title('简单饼图')
plt.show()
6. 自定义样式:

Matplotlib允许用户自定义图表的样式,通过设置不同的样式表,用户可以轻松改变图表的外观。

import matplotlib.pyplot as plt
import matplotlib.style as style# 使用ggplot样式
style.use('ggplot')x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]plt.plot(x, y)
plt.xlabel('X轴标签')
plt.ylabel('Y轴标签')
plt.title('自定义样式的折线图')
plt.show()
7. 结语:

Matplotlib以其经典和灵活的特性,提供了丰富的绘图选项,适用于多种场景。通过掌握Matplotlib的基础和进阶功能,用户可以创建出令人印象深刻的静态图表。在数据可视化的旅程中,Matplotlib为用户提供了坚实的基础。

Seaborn:统计数据的艺术

1. 介绍:

Seaborn是建立在Matplotlib之上的高级数据可视化库,专注于统计数据的呈现和解释。设计时考虑到与Pandas数据框架的兼容性,使得绘图变得更加简洁和高效。Seaborn的独特之处在于其美观的默认设置和对统计关系的强调。

2. 美观的默认设置:

Seaborn通过预定义的颜色主题和绘图样式,使得生成的图表在外观上更具吸引力。用户可以通过set_theme()函数轻松切换预设的主题,例如darkgridwhitegrid等。

import seaborn as sns# 设置为白色网格主题
sns.set_theme(style="whitegrid")# 绘制带有线性回归拟合线的散点图
sns.regplot(x='total_bill', y='tip', data=tips)
3. 强化的绘图功能:
  • 散点图和线性回归拟合: 使用regplot函数,Seaborn能够轻松绘制散点图,并自动生成与数据相关的线性回归拟合线。这有助于直观地显示变量之间的关系。

    import seaborn as sns
    import pandas as pd# 创建DataFrame
    data = {'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59],'tip': [1.01, 1.66, 3.50, 3.31, 3.61]}
    tips = pd.DataFrame(data)# 绘制带有线性回归拟合线的散点图
    sns.regplot(x='total_bill', y='tip', data=tips)
    
  • 箱线图: boxplot函数可以用于生成箱线图,展示数据的分布情况,包括中位数、上下四分位数以及异常值。

    import seaborn as sns
    import pandas as pd# 创建DataFrame
    data = {'day': ['Thu', 'Fri', 'Sat', 'Sun', 'Sun'],'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59]}
    tips = pd.DataFrame(data)# 绘制箱线图
    sns.boxplot(x='day', y='total_bill', data=tips)
    
  • 热力图: heatmap函数用于绘制矩阵数据的热力图,通过颜色的深浅反映数据的大小,适用于展示相关性矩阵等信息。

    import seaborn as sns
    import numpy as np# 创建相关性矩阵
    corr_matrix = np.corrcoef(np.random.randn(5, 5))# 绘制热力图
    sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
    
4. 使用示例:
  • 绘制多个子图: Seaborn支持在同一画布上绘制多个子图,通过FacetGrid类和map函数,用户可以根据数据的某个特征拆分图表。

    import seaborn as sns
    import pandas as pd# 创建DataFrame
    data = {'day': ['Thu', 'Fri', 'Sat', 'Sun', 'Sun'],'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59]}
    tips = pd.DataFrame(data)# 创建FacetGrid对象,拆分图表
    g = sns.FacetGrid(tips, col='day', height=4)
    g.map(sns.histplot, 'total_bill')
    
  • 绘制分布图: distplot函数用于绘制单变量的分布图,包括直方图和核密度估计。

    import seaborn as sns
    import pandas as pd# 创建DataFrame
    data = {'total_bill': [16.99, 10.34, 21.01, 23.68, 24.59]}
    tips = pd.DataFrame(data)# 绘制分布图
    sns.displot(tips['total_bill'], kde=True)
    
5. 结语:
  • Seaborn通过其美观的默认设置和对统计关系的强调,为用户提供了更高层次的数据可视化工具。从散点图到热力图,Seaborn提供了丰富的图表类型,使得数据科学家能够更加轻松地从数据中提取信息。其兼容性和易用性使其成为数据分析中的得力助手。

Plotly:交互式的未来

1. 介绍:

Plotly是一款先进的交互式图表库,旨在提供丰富的数据可视化体验。该库支持静态和动态图表,能够在Web应用程序中实现高度交互性。

2. 交互式图表:

Plotly的主要特点之一是其卓越的交互性。用户可以通过鼠标悬停、缩放、平移等操作与图表进行实时互动,更深入地探索数据的细节。

import plotly.express as px
import pandas as pd# 创建DataFrame
data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10]}
df = pd.DataFrame(data)# 绘制交互式折线图
fig = px.line(df, x='x', y='y', title='交互式折线图')
fig.show()
3. 多种图表类型:
  • 动态图表: Plotly支持创建动态图表,通过添加滑块、按钮等元素,用户能够动态改变图表中显示的数据,适用于展示时间序列或其他动态变化的信息。

    import plotly.express as px
    import pandas as pd# 创建DataFrame
    data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10], 'z': [5, 3, 9, 7, 1]}
    df = pd.DataFrame(data)# 绘制动态散点图
    fig = px.scatter_3d(df, x='x', y='y', z='z', animation_frame=df.index, title='动态散点图')
    fig.show()
    
  • 地理图: Plotly支持创建交互式的地理图,通过scatter_geo等函数,用户可以在地图上展示数据分布。

    import plotly.express as px
    import pandas as pd# 创建DataFrame
    data = {'Country': ['China', 'USA', 'India', 'Brazil', 'Russia'],'Population': [1444216107, 332915073, 1393409038, 213993437, 145912025]}
    df = pd.DataFrame(data)# 绘制地理图
    fig = px.scatter_geo(df, locations='Country', locationmode='country names', size='Population', title='世界人口分布')
    fig.show()
    
  • 3D图表: Plotly可以创建引人入胜的3D图表,例如3D散点图、3D曲面图等,呈现更加生动的数据视图。

    import plotly.express as px
    import pandas as pd# 创建DataFrame
    data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10], 'z': [5, 3, 9, 7, 1]}
    df = pd.DataFrame(data)# 绘制3D散点图
    fig = px.scatter_3d(df, x='x', y='y', z='z', title='3D散点图')
    fig.show()
    
4. Web集成和Dash框架:
  • Web嵌入: Plotly图表可以轻松地嵌入到Web应用程序中,通过HTML标签或嵌入到Dash应用程序中,用户可以将交互式图表集成到自己的Web页面中。

    import plotly.express as px# 创建DataFrame
    data = {'x': [1, 2, 3, 4, 5], 'y': [2, 4, 6, 8, 10]}
    df = pd.DataFrame(data)# 绘制交互式折线图
    fig = px.line(df, x='x', y='y', title='交互式折线图')# 嵌入到HTML页面
    fig.write_html("interactive_plot.html")
    
  • Dash框架: Plotly提供的Dash框架允许用户构建交互式的数据仪表板。通过Dash,用户可以将多个Plotly图表组合成一个动态的数据展示界面。

    import dash
    import dash_core_components as dcc
    import dash_html_components as html# 创建Dash应用
    app = dash.Dash(__name__)# 定义布局
    app.layout = html.Div(children=[html.H1(children='Plotly Dash示例'),dcc.Graph(id='example-graph',figure=fig  # 使用之前创建的Plotly图表)
    ])if __name__ == '__main__':app.run_server(debug=True)
    
5. 结语:
  • Plotly作为一种交互式的未来,为用户提供了丰富多样的数据可视化工具。无论是静态图表、动态图表还是嵌入到Web应用程序中,Plotly都展现了其强大的灵活性和可扩展性。在大数据、动态数据展示和Web应用中,Plotly为用户提供了先进的数据可视化解决方案。

致谢:
我们感谢matplotlibseabornplotly的开发团队,为数据科学家提供了强大的工具,使数据可视化变得更加轻松高效。

参考文献:

  • matplotlib官方文档:https://matplotlib.org/stable/contents.html
  • seaborn官方文档:https://seaborn.pydata.org/
  • plotly官方文档:https://plotly.com/python/

相关文章:

图解未来:数据可视化引领智慧决策时代

图表和数据可视化在数据分析中的关键作用 引言: 在现代数据科学中,数据可视化扮演着至关重要的角色。通过图表和可视化工具,我们能够更直观、更有效地理解数据的分布、趋势和关联性。本文将深入讨论三个主要的数据可视化工具:mat…...

例解什么是Python装饰器

Python中的装饰器一直是一个比较难理解的概念,我自己理解的就是用一个函数去修改另一个函数,主要是为另一个函数添加计时等功能,而且不用改变另一个函数,这样就大大减少了另一个函数的维护成本。 这个装饰器,英文名就…...

EtherCAT从站EEPROM组成信息详解(3):字16-63邮箱、EEPROM信息

0 工具准备 1.EtherCAT从站EEPROM数据(本文使用DE3E-556步进电机驱动器)1 字10-63邮箱、EEPROM信息 1.1 字10-63组成规范 字10-63虽然包含的空间区域很大,但实际上仅包含引导状态下邮箱配置、标准邮箱配置、EEPROM大小、执行的SII标准版本…...

【文件读取/包含】任意文件读取漏洞 afr_1

1.1漏洞描述 漏洞名称任意文件读取漏洞 afr_1漏洞类型文件读取漏洞等级⭐漏洞环境docker攻击方式 1.2漏洞等级 高危 1.3影响版本 暂无 1.4漏洞复现 1.4.1.基础环境 靶场docker工具BurpSuite 1.4.2.靶场搭建 1.创建docker-compose.yml文件 version: 3.2 services: web: …...

(八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

​ 一、五种算法(DBO、LO、SWO、COA、GRO)简介 1、蜣螂优化算法DBO 蜣螂优化算法(Dung beetle optimizer,DBO)由Jiankai Xue和Bo Shen于2022年提出,该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁殖行为…...

通义灵码,阿里巴巴的编程辅助工具

一、官网 通义灵码_智能编码助手_AI编程_人工智能-阿里云 二、安装VSCode 如何下载安装VSCode 三、VSCode安装通义灵码 1.访问扩展详情界面 方式1 访问通义灵码安装教程页面 方法2 访问VSCode市场中的TONGYI Lingma 点击 Install 按钮访问扩展详情界面 2.打开VSCode …...

Uniapp导出的iOS应用上架详解

目录 Uniapp导出的iOS应用上架详解 摘要 引言 苹果审核标准 苹果调试 注意事项和建议 总结 摘要 本文将探讨Uniapp导出的iOS应用能否成功上架的问题。我们将从苹果审核标准、性能影响、调试流程等多个方面进行深入分析,以及向开发者提供相关注意事项和建议。…...

计算机视觉基础(7)——相机基础

前言 从这一节开始,我们来学习几何视觉。中层视觉包括相机模型、单目几何视觉、对极几何视觉和多目立体视觉等。在学习几何视觉最开始,我们先来学习一下相机模型,了解相机的基本原理,了解相机如何记录影像。 一、数字相机 1.1 基…...

解决Github上的README无法显示图片

首先感谢博主的思路:思路 最近写了点东西提交到git 发现本地能查看md里的图片用的相对路径,提交到github就看不见,并且发现不只是我自己的仓库看不见,其他人的我也看不见。那就有问题了 解决:正常使用相对路径&…...

qnx 工程目录创建工具 addvariant

文章目录 前言一、addvariant 是什么二、addvariant 使用实例1. variant names 参数说明2. 创建一个可执行文件工程3. 创建一个动态库工程 总结参考资料 前言 本文主要介绍如何在qnx 开发环境中创建工程目录及其相关的配置文件(common.mk, Makefile 文件等) 软件版本&#xff…...

计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)

第1章:视觉项目资料介绍与学习指南 相关知识: 介绍计算机视觉、OpenCV库,以及课程的整体结构。学习概要: 了解课程的目标和学习路径,为后续章节做好准备。重要性: 提供学生对整个课程的整体认识&#xff0…...

【AI视野·今日CV 计算机视觉论文速览 第278期】Mon, 30 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Mon, 30 Oct 2023 Totally 50 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Image Clustering Conditioned on Text Criteria Authors Sehyun Kwon, Jaeseung Park, Minkyu Kim, Jaewoong Cho, Ernest…...

深度学习:多模态与跨模态

1 定义 1.1 多模态学习 多模态学习(Multimodal Learning)是一种利用来自多种不同感官或交互方式的数据进行学习的方法。在这个语境中,“模态”指的是不同类型的数据输入,如文本、图像、声音、视频等。多模态学习的关键在于整合和…...

大数据Hadoop之——部署hadoop+hive+Mysql环境(Linux)

目录 一、JDK的安装 1、安装jdk 2、配置Java环境变量 3、加载环境变量 4、进行校验 二、hadoop的集群搭建 1、hadoop的下载安装 2、配置文件设置 2.1. 配置 hadoop-env.sh 2.2. 配置 core-site.xml 2.3. 配置hdfs-site.xml 2.4. 配置 yarn-site.xml 2.5. 配置 ma…...

Python与ArcGIS系列(四)在地图文档中加入图层

目录 0 简述1 将图层添加到地图文档中2 将图层插入到地图文档0 简述 本篇介绍如何利用arcpy实现将图层添加到地图文档中,以及将图层插入到地图文档指定的位置。 1 将图层添加到地图文档中 arcpy的mapping模块提供的AddLayer()函数可以实现将图层添加到地图文档中。功能本质上…...

QT 程序异常崩溃

出现以下问题,大概率是你在修改代码时,在pro或者pri中增加了一些不存在的头文件或者cpp,使用BeyondCmp仔细对比,分享,希望帮助到你...

Ubuntu20.04 通过nmcli命令查看网卡状态为unmanaged

问题描述: 通过下述指令查看网卡状态为 "unmanaged" nmcli dev status 解决方法: cd /usr/lib/NetworkManager/conf.d/ sudo mv 10-globally-managed-devices.conf 10-globally-managed-devices.conf.bak sudo cp 10-globally-managed-devic…...

【R Error系列】r - fatal error : RcppEigen. h:没有这样的文件或目录

在头文件那要有 // [[Rcpp::depends(RcppEigen)]] 即&#xff1a; #include <Rcpp.h> #include <RcppEigen.h> using namespace Rcpp; using namespace Eigen;// [[Rcpp::depends(RcppEigen)]] // [[Rcpp::export]] 参考&#xff1a; r - fatal error: RcppEi…...

如何在聊天记录中实时查找大量的微信群二维码

10-5 如果你有需要从微信里收到的大量信息中实时找到别人发到群里的二维码&#xff0c;那本文非常适合你阅读&#xff0c;因为本文的教程&#xff0c;可以让你在海量的微信消息中&#xff0c;实时地把二维码自动挑出来&#xff0c;并且帮你分类保存。 如果你是做网推的&#…...

03-CSS基础选择器

3.1 CSS基础认知&#x1f34e; 3.1.1 &#x1f441;️‍&#x1f5e8;️CSS概念 CSS&#xff1a;层叠样式表&#xff08;Cascading style sheets)&#xff0c;为网页标签增加样式表现的 语法格式&#xff1a; 选择器{<!-- 属性设置 -->属性名:属性值; <!--每一个…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...