Python-Plotly库实现数据动态可视化的示例代码

 更新时间:2025年04月28日 10:38:24   作者:啊阿狸不会拉杆  
Plotly是一个强大的Python可视化库,支持创建高质量的静态、动态和交互式图表,本文主要介绍了Python-Plotly库实现数据动态可视化的示例代码,具有一定的参考价值,感兴趣的可以了解一下

Plotly是一个强大的Python可视化库,支持创建高质量的静态、动态和交互式图表。它特别擅长于绘制三维图形,能够直观地展示复杂的数据关系。本文将介绍如何使用Plotly库实现函数的二维和三维可视化,并提供一些优美的三维函数示例。资源绑定附上完整资源供读者参考学习!

一、库的介绍

Plotly提供了两种主要的API:

  • Plotly Express:简化的API,适合快速创建常见图表。

  • Plotly Graph Objects:功能更强大和灵活,适用于复杂的自定义图表。

安装Plotly库:

pip install plotly

二、常见函数示例

1. 二维函数示例

示例1:正弦函数

import plotly.graph_objects as go
import numpy as np

x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)

fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'))
fig.update_layout(title='正弦函数', xaxis_title='x', yaxis_title='y')
fig.show()

效果展示

示例2:抛物线函数

import plotly.graph_objects as go
import numpy as np

y = np.linspace(-10, 10, 100)
x= y**2

fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'))
fig.update_traces(line=dict(color='red'))
fig.update_layout(title='抛物线函数', xaxis_title='x', yaxis_title='y')
fig.show()

效果展示

2. 三维函数示例

示例1:三维曲面

import plotly.graph_objects as go
import numpy as np

x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

fig = go.Figure(data=go.Surface(z=z, x=x, y=y))

fig.update_layout(title='三维曲面', scene=dict(xaxis_title='x', yaxis_title='y', zaxis_title='z'))
fig.show()

效果展示

示例2:三维曲线

import plotly.graph_objects as go
import numpy as np
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
x = z * np.sin(theta)
y = z * np.cos(theta)

fig = go.Figure(data=go.Scatter3d(x=x, y=y, z=z, mode='lines'))
fig.update_traces(line=dict(color='orange', width=2))
fig.update_layout(title='三维曲线', scene=dict(xaxis_title='x', yaxis_title='y', zaxis_title='z'))
fig.show()

效果展示

三、优美的三维函数示例

示例1:球面函数

import plotly.graph_objects as go
import numpy as np

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))

fig = go.Figure(data=go.Surface(z=z, x=x, y=y, colorscale='Reds'))
fig.update_layout(title='球面', scene=dict(xaxis_title='x', yaxis_title='y', zaxis_title='z'))
fig.show()

效果展示

示例2:莫比乌斯带

import plotly.graph_objects as go
import numpy as np

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(-0.5, 0.5, 100)
u, v = np.meshgrid(u, v)
x = (1 + v * np.cos(u / 2)) * np.cos(u)
y = (1 + v * np.cos(u / 2)) * np.sin(u)
z = v * np.sin(u / 2)

fig = go.Figure(data=go.Surface(z=z, x=x, y=y, colorscale='rainbow'))
fig.update_layout(title='莫比乌斯带', scene=dict(xaxis_title='x', yaxis_title='y', zaxis_title='z'))
fig.show()

效果展示

四、动态和交互式图表示例

示例1:交互式按钮

import plotly.graph_objects as go

fig = go.Figure()

# 添加多条折线
fig.add_trace(go.Scatter(y=[2, 1, 3], name="Line 1"))
fig.add_trace(go.Scatter(y=[3, 2, 1], name="Line 2"))

# 配置交互按钮
fig.update_layout(
    updatemenus=[
        dict(
            type="buttons",
            direction="right",
            buttons=[
                dict(label="Show All", method="update", args=[{"visible": [True, True]}]),
                dict(label="Show Line 1", method="update", args=[{"visible": [True, False]}]),
                dict(label="Show Line 2", method="update", args=[{"visible": [False, True]}]),
            ],
        )
    ]
)

fig.show()

效果展示

示例2:WebGL加速的大数据渲染

import plotly.express as px
import numpy as np

# 模拟大数据
np.random.seed(42)
x = np.random.rand(100_000)
y = np.random.rand(100_000)

# 使用WebGL加速的散点图
fig = px.scatter(x=x, y=y, render_mode='webgl', title="WebGL Accelerated Scatter Plot")
fig.show()

效果展示

示例3:实时疫情数据仪表盘

from dash import Dash, dcc, html, Input, Output
import plotly.graph_objects as go
import pandas as pd

# 模拟疫情数据
data = {
    "date": pd.date_range(start="2020-01-01", periods=100),
    "cases": [i ** 2 for i in range(100)],
    "deaths": [i * 5 for i in range(100)]
}
df = pd.DataFrame(data)

app = Dash(__name__)

app.layout = html.Div([
    dcc.Graph(id="graph"),
    dcc.Slider(
        id="year-slider",
        min=0,
        max=len(df) - 1,
        value=0,
        marks={i: str(df["date"][i].date()) for i in range(0, len(df), 10)},
        step=None
    )
])


@app.callback(Output("graph", "figure"), [Input("year-slider", "value")])
def update_graph(selected_index):
    filtered_df = df.iloc[:selected_index + 1]

    # 使用go.Scatter同时显示折线和数据点
    fig = go.Figure()
    for col in ["cases", "deaths"]:
        fig.add_trace(go.Scatter(
            x=filtered_df["date"],
            y=filtered_df[col],
            mode='lines+markers',
            marker=dict(size=8, color='red'),
            name=col
        ))

    fig.update_layout(title="Covid-19 Cases Over Time", xaxis_title="date", yaxis_title="value")
    return fig


if __name__ == "__main__":
    app.run(debug=True)

效果展示

五、Plotly与Matplotlib的比较

Plotly和Matplotlib都是Python中广泛使用的可视化库,但它们在某些方面有所不同:

特性PlotlyMatplotlib
交互性生成交互式图表,支持缩放、悬停生成静态图表
易用性API较为复杂,但提供了丰富的功能API简单直观,适合初学者
适用场景适合创建动态和交互式图表,如Web应用适合创建静态图表,如科学论文
学习曲线较陡峭,需要时间熟悉API较平缓,易于上手

通过这些比较,可以看出Plotly和Matplotlib各有优缺点,选择哪个库取决于你的具体需求。

六、函数参数用法总结

以下是Plotly中常用函数的参数用法总结:

函数参数描述
Scatterx, y绘制二维散点图或折线图
Scatter3dx, y, z绘制三维散点图或曲线
Surfacex, y, z绘制三维曲面图
Bar3dx, y, z, dx, dy, dz绘制三维条形图
updatemenusbuttons, direction, type配置交互按钮
render_modewebgl使用WebGL加速渲染

通过这些函数,你可以轻松实现各种数学函数的可视化,为数据分析和建模提供强大的工具。

到此这篇关于Python-Plotly库实现数据动态可视化的示例代码的文章就介绍到这了,更多相关Python Plotly库数据动态可视化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用python GDAL库读写geotiff格式的遥感影像方法

    利用python GDAL库读写geotiff格式的遥感影像方法

    今天小编就为大家分享一篇利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python生成随机数的方法

    Python生成随机数的方法

    这篇文章主要介绍了Python生成随机数的方法,有需要的朋友可以参考一下
    2014-01-01
  • Python基于百度AI实现抓取表情包

    Python基于百度AI实现抓取表情包

    本文先抓取网络上的表情图像,然后利用百度 AI 识别表情包上的说明文字,并利用表情文字重命名文件,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • pyinstaller打包opencv和numpy程序运行错误解决

    pyinstaller打包opencv和numpy程序运行错误解决

    这篇文章主要介绍了pyinstaller打包opencv和numpy程序运行错误解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Mac下PyCharm快捷键分享

    Mac下PyCharm快捷键分享

    这篇文章主要介绍了Mac下PyCharm快捷键,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Python简易计算器制作方法代码详解

    Python简易计算器制作方法代码详解

    这篇文章主要介绍了Python简易计算器制作方法,文中代码主要用到了python中的tkinter库,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Python selenium文件上传下载功能代码实例

    Python selenium文件上传下载功能代码实例

    这篇文章主要介绍了Python selenium文件上传下载功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • django中间键重定向实例方法

    django中间键重定向实例方法

    在本篇文章里小编给各位分享的是关于django中间键重定向实例方法以及相关代码,需要的朋友们学习下吧。
    2019-11-11
  • Python实现希尔排序算法的原理与用法实例分析

    Python实现希尔排序算法的原理与用法实例分析

    这篇文章主要介绍了Python实现希尔排序算法,简单讲述了希尔排序的原理并结合具体实例形式分析了Python希尔排序的具体实现方法与使用技巧,需要的朋友可以参考下
    2017-11-11
  • python如何判断IP地址合法性

    python如何判断IP地址合法性

    这篇文章主要为大家详细介绍了python如何判断IP地址合法性,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04

最新评论