Project

General

Profile

Actions

Web tech » History » Revision 9

« Previous | Revision 9/29 (diff) | Next »
jun chen, 02/12/2025 10:49 AM


Web tech

How to visualize data:

D3 ref: https://observablehq.com/@d3/gallery , https://johan.github.io/d3/ex/
Plotly ref: https://plotly.com/javascript/

js d3 内嵌数据显示折线

show code...

JavaScript + Plotly(纯前端实现)**

show code...

使用步骤:

  1. 将CSV文件命名为 data.csv,格式如下:
    x,y
    1,5
    2,3
    3,7
    4,2
    5,8
    
  2. 将HTML文件和 data.csv 放在同一目录下,用浏览器打开HTML文件。
  3. 效果:支持缩放、悬停显示数值、拖拽平移等交互。

Python + Plotly(生成独立HTML文件)**

特点:适合Python用户,自动化生成图表文件。

show code...

使用步骤:

  1. 安装依赖:
    pip install pandas plotly
    
  2. 运行代码后,生成 interactive_chart.html,用浏览器打开即可看到图表。

交互功能对比

功能 JavaScript/Plotly Python/Plotly
缩放/平移 ✔️ ✔️
悬停显示数值 ✔️ ✔️
数据点高亮 ✔️ ✔️
导出为图片(PNG/JPEG) ✔️ ✔️
动态更新数据 ✔️(需额外代码)

进阶方案(可选)

  1. 动态数据加载(JavaScript):

    <input type="file" id="csvFile" accept=".csv">
    <div id="chart"></div>
    <script>
      document.getElementById('csvFile').addEventListener('change', function(e) {
        const file = e.target.files[0];
        const reader = new FileReader();
        reader.onload = function(e) {
          // 解析并绘制图表(代码同方法一)
        };
        reader.readAsText(file);
      });
    </script>
    
    • 用户可上传任意CSV文件,实时生成图表。
  2. 添加控件(Python + Dash):

    from dash import Dash, dcc, html
    import pandas as pd
    import plotly.express as px
    
    app = Dash(__name__)
    df = pd.read_csv("data.csv")
    
    app.layout = html.Div([
        dcc.Graph(
            id='live-chart',
            figure=px.scatter(df, x='x', y='y', title='Dash动态图表')
        ),
        html.Button('更新数据', id='update-button')
    ])
    
    if __name__ == '__main__':
        app.run_server(debug=True)
    
    • 运行后访问 http://localhost:8050,支持动态交互和按钮触发操作。

最终效果示例

交互式图表示例

选择适合你的场景快速实现吧!

Updated by jun chen 4 months ago · 29 revisions