首页 > 其他分享 >探索 Plotly:一个强大的交互式数据可视化库

探索 Plotly:一个强大的交互式数据可视化库

时间:2024-12-18 18:00:22浏览次数:8  
标签:Plotly title df Sales sales 可视化 fig 交互式

探索 Plotly:一个强大的交互式数据可视化库

数据可视化是数据分析过程中不可或缺的一部分,它能帮助我们更直观地理解数据,发现数据中的趋势和规律。在众多可视化库中,Plotly 是一个非常强大的工具,它以其交互式、易用性和广泛的功能而备受欢迎。本文将为您介绍 Plotly 的核心功能及其在数据可视化中的应用。


什么是 Plotly?

Plotly 是一个基于 Python 的开源库,专注于交互式数据可视化。它的特点包括:

  • 支持多种图表类型:如折线图、柱状图、散点图、饼图、热力图、地图等。
  • 交互性强:生成的图表可以通过鼠标拖动、缩放、悬停等操作动态探索数据。
  • 可导出为 HTML:可以将交互式图表嵌入网页。
  • 易于集成:与 Pandas、NumPy 等数据处理工具无缝兼容。

安装与入门

首先,需要确保系统中安装了 Plotly:

pip install plotly

接下来,我们通过一个简单的例子来体验 Plotly 的基本用法。


创建一个简单的折线图

以下代码展示了如何用 Plotly 创建一个交互式折线图:

import plotly.graph_objects as go

# 数据
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

# 创建图形对象
fig = go.Figure(
    data=go.Scatter(x=x, y=y, mode='lines+markers', name='Example Line')
)

# 添加标题
fig.update_layout(
    title="Simple Line Chart with Plotly",
    xaxis_title="X Axis",
    yaxis_title="Y Axis"
)

# 显示图表
fig.show()

执行这段代码后,你会看到一个可以缩放和悬停查看数据点的折线图。


用 Pandas 数据快速绘图

当我们处理结构化数据时,通常会用 Pandas DataFrame 作为数据源。Plotly 与 Pandas 的结合可以让绘图更加便捷。例如:

import pandas as pd
import plotly.express as px

# 创建示例 DataFrame
data = {
    "Year": [2018, 2019, 2020, 2021],
    "Sales": [200, 300, 400, 500],
    "Profit": [50, 80, 100, 120]
}
df = pd.DataFrame(data)

# 使用 Plotly Express 绘制柱状图
fig = px.bar(
    df,
    x="Year",
    y="Sales",
    color="Profit",
    title="Sales and Profit by Year"
)

fig.show()

Plotly Express 是 Plotly 提供的一个高层 API,支持快速创建图表,非常适合用来生成简单的分析图。


高级应用:多子图布局

对于更复杂的场景,我们可能需要在同一张画布上展示多个图表。Plotly 提供了方便的子图功能:

from plotly.subplots import make_subplots

# 创建一个包含两个子图的布局
fig = make_subplots(rows=1, cols=2, subplot_titles=("Line Chart", "Bar Chart"))

# 添加第一个子图
fig.add_trace(
    go.Scatter(x=[1, 2, 3], y=[10, 20, 30], mode="lines", name="Line"),
    row=1, col=1
)

# 添加第二个子图
fig.add_trace(
    go.Bar(x=["A", "B", "C"], y=[5, 15, 10], name="Bar"),
    row=1, col=2
)

# 更新布局
fig.update_layout(title="Subplots Example")

fig.show()

这段代码创建了一个包含折线图和柱状图的复合图表。


使用 Plotly 实现地图可视化

Plotly 还支持地理可视化,例如显示地理分布的散点图或热力图。以下是一个示例:

import plotly.express as px

# 使用自带数据集
df = px.data.gapminder()

# 绘制气泡地图
fig = px.scatter_geo(
    df.query("year == 2007"),
    locations="iso_alpha",
    size="pop",
    color="continent",
    hover_name="country",
    projection="natural earth",
    title="World Population in 2007"
)

fig.show()

这种地图非常适合展示具有地理属性的数据。


优势与总结

Plotly 的核心优势在于:

  1. 交互性:使数据分析更加生动。
  2. 兼容性:可与 Pandas、NumPy 等数据处理库无缝协作。
  3. 跨平台性:支持在 Jupyter Notebook、网页和桌面应用中运行。

Plotly 实战:从数据分析到交互式仪表盘

理论结合实际,才能真正掌握工具的强大之处。在本节中,我们将以一个真实的数据分析任务为例,完整展示如何利用 Plotly 创建交互式图表,并最终构建一个动态仪表盘。


实战场景

假设我们拥有一个电商销售数据集,数据包括:

  • 订单日期:订单发生的时间
  • 销售额:订单的总金额
  • 类别:商品的种类
  • 地区:销售发生的地区

我们将完成以下任务:

  1. 分析每月销售趋势
  2. 比较不同类别的销售贡献
  3. 展示地区销售分布
  4. 构建交互式仪表盘

数据准备

首先,我们创建一个虚拟的数据集:

import pandas as pd
import numpy as np

# 生成示例数据
np.random.seed(42)
dates = pd.date_range(start="2023-01-01", end="2023-12-31", freq="D")
data = {
    "Order Date": np.random.choice(dates, 500),
    "Sales": np.random.randint(100, 1000, size=500),
    "Category": np.random.choice(["Electronics", "Clothing", "Home Appliances"], 500),
    "Region": np.random.choice(["North", "South", "East", "West"], 500)
}
df = pd.DataFrame(data)

# 确认数据结构
print(df.head())

我们将使用这个数据集完成后续可视化任务。


分析每月销售趋势

首先,计算每月的销售总额,并绘制折线图:

import plotly.express as px

# 数据预处理
df['Order Date'] = pd.to_datetime(df['Order Date'])
df['Month'] = df['Order Date'].dt.to_period('M')
monthly_sales = df.groupby('Month')['Sales'].sum().reset_index()

# 绘制折线图
fig = px.line(
    monthly_sales,
    x='Month',
    y='Sales',
    title='Monthly Sales Trend',
    labels={'Month': 'Month', 'Sales': 'Total Sales'}
)

fig.update_traces(mode='lines+markers')  # 添加点标记
fig.show()

图表展示了每月销售总额的变化趋势,便于发现旺季和淡季。


比较不同类别的销售贡献

利用饼图展示不同商品类别的销售占比:

# 计算各类别销售额
category_sales = df.groupby('Category')['Sales'].sum().reset_index()

# 绘制饼图
fig = px.pie(
    category_sales,
    names='Category',
    values='Sales',
    title='Sales Contribution by Category',
    hole=0.3  # 创建环形图
)

fig.show()

饼图清晰地反映了各商品类别对总销售的贡献比例。


展示地区销售分布

用条形图展示不同地区的销售额:

# 计算各地区销售额
region_sales = df.groupby('Region')['Sales'].sum().reset_index()

# 绘制柱状图
fig = px.bar(
    region_sales,
    x='Region',
    y='Sales',
    color='Region',
    title='Sales by Region',
    text='Sales'
)

fig.update_layout(xaxis_title="Region", yaxis_title="Total Sales")
fig.show()

条形图显示了各地区的销售水平,为制定区域策略提供参考。


构建交互式仪表盘

将上述图表整合到一个交互式仪表盘中:

from plotly.subplots import make_subplots
import plotly.graph_objects as go

# 创建子图布局
fig = make_subplots(
    rows=2, cols=2,
    specs=[[{"type": "xy"}, {"type": "domain"}], [{"type": "xy"}, None]],
    subplot_titles=("Monthly Sales Trend", "Sales by Category", "Sales by Region")
)

# 子图1:折线图 - 月销售趋势
fig.add_trace(
    go.Scatter(x=monthly_sales['Month'].astype(str), y=monthly_sales['Sales'], mode='lines+markers', name="Monthly Sales"),
    row=1, col=1
)

# 子图2:饼图 - 类别销售占比
fig.add_trace(
    go.Pie(labels=category_sales['Category'], values=category_sales['Sales'], hole=0.3, name="Category Sales"),
    row=1, col=2
)

# 子图3:柱状图 - 区域销售分布
fig.add_trace(
    go.Bar(x=region_sales['Region'], y=region_sales['Sales'], name="Region Sales"),
    row=2, col=1
)

# 更新布局
fig.update_layout(
    title="Interactive Sales Dashboard",
    showlegend=False,
    height=800
)

fig.show()

总结

通过以上步骤,我们利用 Plotly 完成了从单图表绘制到仪表盘构建的全过程。在实战中,Plotly 的交互性和灵活性使得它非常适合处理复杂的数据可视化需求,尤其是需要动态探索数据时。

下一步,您可以尝试:

  1. 将数据动态更新,构建实时仪表盘。
  2. 添加下拉菜单或滑块,实现数据过滤和交互功能。
  3. 将图表导出为 HTML 嵌入到您的报告或网页中。

Plotly 是数据分析师和工程师不可或缺的工具,赶快动手试试吧!

标签:Plotly,title,df,Sales,sales,可视化,fig,交互式
From: https://blog.csdn.net/liaoqingjian/article/details/144566263

相关文章

  • 乐维 CMDB:业务关系“可视化指南”
    在当今数字化时代,企业的IT架构日益复杂,众多的服务器、数据库、中间件、操作系统以及网络资源相互交织,构成了庞大而精密的业务系统。如何有效地管理这些资源,清晰地把握业务上下游关系,并实现高效的监控与联动,成为企业IT管理面临的重大挑战。乐维CMDB业务视图的出现,为解......
  • 18章4节:ACF和PACF的可视化,和识别最佳模型
    时间序列分析是研究序列数据背后规律的一种重要方法,其中ARIMA模型是最常用的建模工具之一。在ARIMA模型的建立过程中,自相关函数(ACF)和偏自相关函数(PACF)的可视化分析起到了关键作用,它们能够帮助我们识别模型的参数阶数(p和q)。本文首先通过创建模拟数据并进行单位根检验,确保......
  • NPM,可视化的Nginx管理工具
    NPM,可视化的Nginx管理工具前言NPM,全称:NginxProxyManager,是一款可视化的Nginx的管理工具。众所周知,Nginx的配置文件对于新手尤其是我这样的小白,还是很难上手配置的。虽然说现在可以使用AI,大大降低了理解,配置难度,但是可视化的配置仍然具有很大的优势,极大的降低了我们使用的门......
  • 【Python】【数据分析】深入探索 Python 数据可视化:Matplotlib 绘图库完整教程
    目录引言一、什么是Matplotlib?1.1Matplotlib的安装1.2Matplotlib的基本功能二、Matplotlib的基础绘图2.1绘制折线图2.2绘制柱状图2.3绘制散点图2.4绘制饼图三、高级功能与定制3.1设置图表样式3.2使用子图3.3保存图表四、Matplotlib流程图4.1Mermaid流......
  • SSM高校社团学生会管理系统--47676(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP
    摘  要本论文基于SSM框架,设计和实现了一个高校社团学生会管理系统。该系统旨在提供一个全面、高效、智能的高校社团学生会管理平台,以便管理者可以迅速且便捷地进行各项管理工作,并及时向社团成员提供准确的社团信息。  该系统通过角色划分为社团成员、社团社长和管理员......
  • 数据分布检验利器:通过Q-Q图进行可视化分布诊断、异常检测与预处理优化
    在机器学习和数据分析中,我们经常需要验证数据是否符合某种特定的分布(如正态分布)。这种验证对于选择合适的统计方法和机器学习模型至关重要。例如许多统计检验和机器学习算法都假设数据服从正态分布。如果这个假设不成立,我们可能需要对数据进行转换或选择其他更适合的方法。Q-Q图(Q......
  • 大数据可视化分析-django基于Hadoop的天气预报数据爬取与可视化分析
    文章目录程序资料获取一、项目技术二、项目内容和项目介绍三、核心代码四、效果图五、资料获取程序资料获取......
  • 五款实用报表工具推荐:助你轻松搞定数据可视化!
    概述本文将为大家介绍五款功能各异的报表工具,包括山海鲸报表、Canva、BIRT、Chart.js和Metabase。文章详细分析了每款工具的特点、优缺点以及适用场景,帮助企业用户根据自身需求选择合适的报表解决方案,以提高数据分析和可视化能力。1.山海鲸报表简介山海鲸报表是一款国产报表工......
  • 从静态到动态:Matplotlib与Plotly的对比
    数据可视化是数据科学和分析的关键要素,可以增强对复杂数据的理解和交流。Python的数据可视化库有很多,目前使用广泛的主要有两个,一个是老牌的Matplotlib,一个是新秀Plotly。Matplotlib通常被认为是Python数据可视化的基础库,自2003年以来一直是数据科学家,分析师和研究人员的坚定伙......
  • MEDIQ:面向可靠临床推理的主动问诊型大模型,基于信息缺失场景下的动态交互式医疗诊断研
    MEDIQ:面向可靠临床推理的主动问诊型大模型,基于信息缺失场景下的动态交互式医疗诊断研究,提升诊断准确率22.3%论文大纲理解1.最终目标2.层层分解的关键问题3.解决方案及效果4.思路特点结构分析1.层级结构分析叠加形态(能力层层递进)构成形态(部件组合带来新能力)......