【Python百宝箱】图解未来:数据可视化引领智慧决策时代

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

引言:
在现代数据科学中,数据可视化扮演着至关重要的角色。通过图表和可视化工具,我们能够更直观、更有效地理解数据的分布、趋势和关联性。本文将深入讨论三个主要的数据可视化工具: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.rcParams['font.sans-serif'] = ['SimHei']  # 指定中文字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
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))
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定中文字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
# 子图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')
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定中文字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
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.rcParams['font.sans-serif'] = ['SimHei']  # 指定中文字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
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.rcParams['font.sans-serif'] = ['SimHei']  # 指定中文字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
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/149826.shtml

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

相关文章

Windows安装Java环境(OracleJDK)

在下载之前,我们先了解一下java的前世今生 1991年:Java 的前身 Oak 由 James Gosling 和他的团队在 Sun Microsystems 公司开发。1995年:Oak 更名为 Java,并在同年发布。Java 1.0 版本正式推出。1996年:Sun Microsyst…

Vue 2.0中引入的类型检查Flow

1. 认识 Flow Flow 是 facebook 出品的 JavaScript 静态类型检查工具。Vue.js 的源码利用了 Flow 做了静态类型检查,所以了解 Flow 有助于我们阅读源码。 2. 为什么用 Flow JavaScript 是动态类型语言,它的灵活性有目共睹,但是过于灵活的副…

XLua热更新框架原理和代码实战

安装插件 下载Xlua插件:https://github.com/Tencent/xLua 下载完成后,把Asset文件夹下的文件拖入自己的工程Asset中,看到Unity编辑器上多了个Xlua菜单,说明插件导入成功 Lua启动代码 新建一个空场景,场景中什么都不…

Threejs_06 多材质的实现

Threejs 同一个几何体如何实现多材质呢? 多材质的实现 1.使用索引绘制一个几何体 //创建几何体(三角形) const geometry new THREE.BufferGeometry();//使用索引绘制 (两个共用的) const vertices new Float32Array([-1.0, -1.0, 0.0, 1.0, -1.0, 0.0, 1.0, 1…

谈谈系统性能调优中都需要考虑哪些因素

一、 什么是性能调优? 这个系统好慢、网站又打不开了,太卡了,又没响应了,相信大家都遇到过用户的这种抱怨,此时,说明我们的应用系统出现了性能问题,那么怎么办呢,首先想到的应该是优…

npm私有云

安装node时npm会自动安装,npm也可以单独安装。 package.json 在使用npm时,package.json文件是非常重要的,因为它包含了关于项目的必要信息,比如名称、版本、依赖项等。在初始化新项目时,通常会使用npm init命令生成一…

HP惠普暗影精灵9笔记本电脑OMEN by HP Transcend 16英寸游戏本16-u0000原厂Windows11系统

惠普暗影9恢复出厂开箱状态,原装出厂Win11-22H2系统ISO镜像 下载链接:https://pan.baidu.com/s/17ftbBHEMFSEOw22tnYvPog?pwd91p1 提取码:91p1 适用型号:16-u0006TX、16-u0007TX、16-u0008TX、16-u0009TX、16-u0017TX 原厂系…

每天一道算法题(五)——判断一组数字是否连续,出现连续数字的时候以‘-’输出

文章目录 1、问题2、示例3、解决方法(0)错误示范——两个for循环遍历(1)方法1(递归)(2)方法2(推荐) 1、问题 实现一个函数,判断一组数字是否连续。当出现连续数字的时候以…

数据结构与算法编程题2

逆置线性表&#xff0c;使空间复杂度为 O(1) #include <iostream> using namespace std;typedef int ElemType; #define Maxsize 100 #define OK 1 #define ERROR 0 typedef struct SqList {ElemType data[Maxsize];int length; }SqList;void Init_SqList(SqList& …

YOLOV8部署Android Studio安卓平台NCNN

下载Android Studio&#xff0c;配置安卓开发环境&#xff0c;这个过程比较漫长。 安装cmake&#xff0c;注意安装的是cmake3.10版本。 根据手机安卓版本选择相应的安卓版本&#xff0c;我的是红米K30Pro&#xff0c;安卓12。 使用腾讯开源的ncnn&#xff0c;这是一个为手机端极…

驶入产业发展快车道,汉鑫科技人工智能研发中心正式启用!

11月18日&#xff0c;汉鑫科技人工智能研发中心正式启用。中心立足烟台&#xff0c;服务全国&#xff0c;聚焦工业智能、智能网联、智慧城市三大业务板块&#xff0c;以人工智能技术赋能政企实现“数智化”转型升级。该中心的启用标志着汉鑫科技在人工智能研发应用领域迈上了新…

移动端表格分页uni-app

使用uni-app提供的uni-table表格 网址&#xff1a;https://uniapp.dcloud.net.cn/component/uniui/uni-table.html#%E4%BB%8B%E7%BB%8D <uni-table ref"table" :loading"loading" border stripe type"selection" emptyText"暂无更多数据…

Java的构造器

构造器 1.package com.msb2; 2. 3./** 4. * Auther: msb-zhaoss 5. */ 6.public class Person { 7. //构造器&#xff1a;没有任何参数的构造器我们叫做&#xff1a;空参构造器--》空构造器 8. public Person(){ 9. /*age 19; 10. name "lili"…

【Nacos】配置管理、微服务配置拉取、实现配置热更新、多环境配置

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Nacos 一、nacos实现配置管理1.1 统一配置管…

Taro安装及使用

安装及使用 安装​ Taro 项目基于 node&#xff0c;请确保已具备较新的 node 环境&#xff08;>12.0.0&#xff09;&#xff0c;推荐使用 node 版本管理工具 nvm 来管理 node&#xff0c;这样不仅可以很方便地切换 node 版本&#xff0c;而且全局安装时候也不用加 sudo 了…

不必购买Mac,这款国产设计工具能轻松替代Sketch!

介绍 即时设计是新一代可以直接在浏览器中使用的设计工具&#xff0c;具有Sketch和实时协作功能。与本地Sketch相比&#xff0c;增加了实时协作功能&#xff0c;即时设计可以看作是在线Sketch&#xff0c;两个工具可以简单粗暴地总结为一个公式&#xff1a; 即时设计Sketch云…

Nginx - 本机读取服务器图像、视频

目录 一.引言 二.安装 Nginx 1.安装 By apt 2.安装 By 官网 三.配置 Nginx 1.Linux 机器配置 2.重启 Nginx 服务 3.本机查看机器文件 四.总结 一.引言 前面介绍了 GFP-GAN、PNG2GIF、GIF2PNG 等操作&#xff0c;我们生成的 video、gif、png 等形式的文件都存储在 lin…

Nginx(反向代理,负载均衡,动静分离)

反向代理 Nginx反向代理是一种将客户端请求转发给后端服务器的技术&#xff0c;即反向代理服务器。在这种架构中&#xff0c;客户端请求首先到达Nginx服务器&#xff0c;然后由Nginx服务器将请求转发给后端服务器&#xff0c;后端服务器响应请求&#xff0c;并将响应传递回Ngi…

【wp】2023第七届HECTF信息安全挑战赛 Web

伪装者 考点&#xff1a;http协议flask的session伪造ssrf读取文件 首先根据题目要求就行伪造HTTP 这里不多说&#xff0c;比较基础 然后下面得到是个登入 页面&#xff0c;我们输入zxk1ing 得到 说什么要白马王子 &#xff0c;一眼session伪造 看到ey开头感觉是jwt 输入看看 得…

通达信的ebk文件

我们在通达信软件中 调出 “自定义板块设置” 这个菜单&#xff0c;点击“导出”&#xff0c;会提示你存储 “自选股.EBK”&#xff0c;其实就是对自定义板块里的目录进行备份的一种方式&#xff0c; 当我们打开 这个文件&#xff0c;你会发现其实就是存储了 股票代码&#xff…