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

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

引言:
在现代数据科学中,数据可视化扮演着至关重要的角色。通过图表和可视化工具,我们能够更直观、更有效地理解数据的分布、趋势和关联性。本文将深入讨论三个主要的数据可视化工具: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/

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

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

相关文章

mindspore mindyolo目标检测华为昇腾上推理使用、训练;华为OBS文件传输使用

参考: https://github.com/mindspore-lab/mindyolo 使用案例: https://github.com/mindspore-lab/mindyolo/blob/master/GETTING_STARTED.md 安装: pip install mindyolo特别注意opencv-python、opencv-python-headless版本问题&#xff0…

代码随想录算法训练营Day 53 || 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

1143.最长公共子序列 力扣题目链接 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何…

Arthas(阿尔萨斯)--(三)

目录 一、Arthas学习 1、class/classloader相关命令一 1、sc 2、sm 2、class/classloader相关命令二 1、jad 2、mc 3、redefine 三、class/classloader相关命令三 一、Arthas学习 Arthas(阿尔萨斯)--(一) Arthas(阿尔萨斯)--(二) 1、class/classloader相关命令一 …

【手写数据库toadb】代码又更新了,增加了解析树,查询树,执行计划,向更多复杂SQL迈进了一步

toadb updated by 2023/11/15 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 …

003.文件描述符、重定向

1、文件描述符 文件描述符是与输入和输出流相关联的整数。最广为人知的文件描述符是stdin、stdout和stderr。我们可以将某个文件描述符的内容重定向到另一个文件描述符中。 在编写脚本的时候会频繁用到标准输入(stdin)、标准输出(stdout&am…

Visual Studio Code配置c/c++环境

Visual Studio Code配置c/c环境 1.创建项目目录2.vscode打开项目目录3.项目中添加文件4.文件内容5.配置编译器6.配置构建任务7.配置调试设置 1.创建项目目录 d:\>mkdir d:\c语言项目\test012.vscode打开项目目录 3.项目中添加文件 4.文件内容 #include <iostream> u…

网络编程TCP/UDP通信

1 网络通信概述 1.1 IP 和端口 所有的数据传输&#xff0c;都有三个要素 &#xff1a;源、目的、长度。 怎么表示源或者目的呢&#xff1f;请看图 所以&#xff0c;在网络传输中需要使用“IP 和端口”来表示源或目的。 1.2 网络传输中的 2 个对象&#xff1a;server 和 cl…

nvidia-docker部署pytorch服务【GPU工作站】

文章目录 一、安装 Docker二、安装 NVIDIA Container Toolkit三、宿主机安装 cuda 和 nvidia-driver四、测试一、安装 Docker 可以参考这篇文章 https://blog.csdn.net/weixin_43721000/article/details/124237932 二、安装 NVIDIA Container Toolkit 参考nvidia官方 https:/…

C语言--字符串详解(多角度分析,什么是字符串?字符串如何存储?字符串如何应用?字符串常用的库函数有哪些?)

目录 一、前言 &#x1f4a6;什么是字符串 &#x1f4a6;字符串如何存储&#xff1f; 二、字符串常量和字符数组 &#x1f4a6;字符串常量 ✨什么是字符串常量&#xff1f; ✨字符串常量与指针 &#x1f4a6;字符数组 ✨字符数组的应用 &#x1f4a6;字符串常量与字符数组的…

Flink和Kafka连接时的精确一次保证

Flink写入Kafka两阶段提交 端到端的 exactly-once&#xff08;精准一次&#xff09; kafka -> Flink -> kafka 1&#xff09;输入端 输入数据源端的 Kafka 可以对数据进行持久化保存&#xff0c;并可以重置偏移量&#xff08;offset&#xff09; 2&#xff09;Flink内…

k8s-集群升级 2

在每个集群节点都安装部署cir-docker 配置cri-docker 升级master节点 导入镜像到本地并将其上传到仓库 修改节点套接字 升级kubelet 注&#xff1a;先腾空后进行升级&#xff0c;顺序不能搞反&#xff0c;否则会导致严重问题 配置kubelet使用cri-docker 解除节点保护 升级wor…

水库大坝安全监测预警系统的重要作用

水库大坝建造在地质构造复杂、岩土特性不均匀的地基上&#xff0c;在各种荷载的作用和自然因素的影响下&#xff0c;其工作性态和安全状况随时都在变化。如果出现异常&#xff0c;又不被及时发现&#xff0c;其后果不堪设想。全天候实时监测&#xff0c;实时掌握水库水位、雨情…

postman连接数据库

参考&#xff1a;https://blog.csdn.net/qq_45572452/article/details/126620210 1、安装node.js 2、配置环境变量 3、安装xmysql连接数据库cmd窗口输入"npm install -g xmysql"后回车cmd窗口输入"xmysql"后回车,验证xmysql是否安装成功(下图代表安装成功)…

【ATTCK】ATTCK视角下的水坑钓鱼攻防战法

在网络安全领域&#xff0c;ATT&CK已经成为了研究和理解恶意攻击者行为的重要工具。站在攻击者的视角&#xff0c;ATT&CK为我们描绘了他们在攻击过程中所使用的各种战术、技术和常见知识。本文将结合ATT&CK框架&#xff0c;对水坑钓鱼攻击进行深入分析&#xff0c;…

【C++面向对象】13. 接口 / 抽象类*

文章目录 【 1. 抽象类 】1.1 抽象类的定义1.2 抽象类的应用条件1.3 实例 【 2. 设计策略 】 接口描述了类的行为和功能&#xff0c;而不需要完成类的特定实现。C 接口是使用 抽象类&#xff08;abstract base class&#xff0c;也称为ABC&#xff09; 来实现的。 【 1. 抽象类…

phalcon 访问IndexController 中只能访问indexAction方法,访问不了testAction等其它问题的解决办法

phalcon 访问IndexController 中只能访问indexAction方法&#xff0c;访问不了testAction&#xff0c;也访问不了indexAction方法&#xff0c;但是可以访问ArticleController里面的任意方法。访问其它方法出现这个错误“php - phalcon IndexController handler class cannot be…

配置开启Docker2375远程连接与解决Docker未授权访问漏洞

一、配置开启Docker远程连接 首先需要安装docker,参考我这篇文章&#xff1a;基于CentOS7安装配置docker与docker-compose 配置开启Docker远程连接的步骤&#xff1a; //1-编辑/usr/lib/systemd/system/docker.service 文件 vim /usr/lib/systemd/system/docker.service //2…

2023鸿蒙预定未来,环境搭建学习

鸿蒙开发基础知识 鸿蒙的基本概念和特点 鸿蒙&#xff08;HarmonyOS&#xff09;是华为公司开发的一款全场景分布式操作系统。它的设计目标是为各种设备提供统一的、无缝的用户体验。鸿蒙的核心特点包括以下几个方面&#xff1a; 分布式架构&#xff1a;鸿蒙采用分布式架构&…

LCD1602指定位置显示字符串-详细版

本文为博主 日月同辉&#xff0c;与我共生&#xff0c;csdn原创首发。希望看完后能对你有所帮助&#xff0c;不足之处请指正&#xff01;一起交流学习&#xff0c;共同进步&#xff01; > 发布人&#xff1a;日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

Django模板层

模板之变量 所有的数据类型都可以在模板中使用 render(request, index.html, context{}) render(request, index.html, contextlocals()) """在模板中使用变量的时候&#xff0c;用的是字典的key值&#xff0c;key值value值一般保持一致"""详细…