当前位置:首页 > 技术知识 > 正文内容

Plotly.Blazor: 打造Blazor交互图表

maynowei8个月前 (09-21)技术知识94

在开发中,数据可视化是不可缺少的一部分。不管是仪表盘、报表系统还是数据分析平台,图表展示都很重要。

介绍一个专为 Blazor 开发打造的开源库 —— Plotly.Blazor。将广受欢迎的 JavaScript 图表库 Plotly.js 封装成 Razor 组件。可以不用写一行 JS,在 Blazor 项目中使用丰富的交互式图表。


什么是 Plotly.Blazor?

Plotly.Blazor 是一个将 plotly.js 包装为 Blazor 可用组件的开源项目。它的主要优点有

  • o 根据 Plotly 的官方配置结构生成 C# 类;
  • o 支持自动更新到最新版本的 plotly.js
  • o 提供类型安全的 API,方便在 Blazor 中集成和操作图表;
  • o 兼容 Blazor Server 和 Blazor WebAssembly。

使用

环境准备

  • o Visual Studio 2019(推荐 16.6+)或 VS Code;
  • o .NET 6 或更高版本(适用于 v2.0.0 及以上);
  • o 已创建 Blazor 项目(Server / WebAssembly 都可以);

安装方法

你可以通过 NuGet 安装:

Install-Package Plotly.Blazor

或者使用 CLI:

dotnet add package Plotly.Blazor

注意:如果你使用的是 4.1.0 或更低版本,请手动引入 JS 文件到 _Layout.cshtml

引入命名空间

_Imports.razor 文件中添加以下代码:

@using Plotly.Blazor
@using Plotly.Blazor.Traces

如何使用?

1. 创建图表组件

.razor 页面中加入下面的代码:

<PlotlyChart @bind-Config="config" @bind-Layout="layout" @bind-Data="data" @ref="chart"/>

2. 初始化图表数据

@code {
    PlotlyChart chart;
    Config config = new Config();
    Layout layout = new Layout();
    
    IList<ITrace> data = new List<ITrace>
    {
        new Scatter
        {
            Name = "示例散点图",
            Mode = ModeFlag.Lines | ModeFlag.Markers,
            X = new List<object>{1,2,3},
            Y = new List<object>{1,2,3}
        }
    };
}

3. 动态更新数据(可选)

private async Task AddData(int count = 100)
{
    if (!(chart.Data.FirstOrDefault() is Scatter scatter)) return;
    var (x, y) = Helper.GenerateData(scatter.X.Count + 1, scatter.X.Count + 1 + count);

    await chart.ExtendTrace(x, y, data.IndexOf(scatter));
}

示例预览

在线演示地址 : https://laytec-ag.github.io/Plotly.Blazor








项目地址

GitHub 地址:https://github.com/LayTec-AG/Plotly.Blazor

相关文章

高考一词多义考点! 30个高频词汇,完形填空再也不怕啦

1. address·/a'dres/ v.处理(问题)We must address the issue of climate change.·/'aedres/ n.地址Pleas...

Linux系统编程—互斥量mutex(linux 互斥量)

##互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也...

分析 Rust 程序的火焰图(rust火吗)

分析 Rust 程序的火焰图(Flame Graph)是定位性能瓶颈的核心手段,其核心是通过可视化的函数调用栈和时间分布,找到 CPU 耗时、内存分配、锁竞争等热点。以下是详细的分析方法和步骤,结合...

Go语言进阶:时间轮(golang时间轮)

时间轮概念时间轮(Timing Wheel)是一种高效的定时任务调度数据结构,特别适合处理大量定时任务。它通过一个循环数组(轮盘)和多个槽位(buckets)来组织定时任务,每个槽位代表一个时间间隔。...

从 async/await 到虚拟线程:Python 并发的再思考

演进之路:从async/await到线程的反思首先必须明确的是,async/await对Python并非全无裨益:它最大的价值,是让更多人接触到了并发编程。通过在编程语言中嵌入语法元素,并发编程的门槛...

C++26中同步与原子操作新变化(c++ 同步)

引言随着多核处理器和并发编程的普及,C++26进一步增强了对同步与原子操作的支持,为开发者提供了更高效、更安全的工具来应对多线程编程中的数据竞争与同步挑战。自C++11引入原子操作以来,C++标准库在...