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

Plotly.Blazor: 打造Blazor交互图表

maynowei9个月前 (09-21)技术知识103

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

介绍一个专为 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

相关文章

单片机C语言编程,心得都在这里了

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都...

Shopee新手指南:Shopee卖家中心用户界面介绍

1.Shopee各站点前台网页链接:2.Shopee各站点后台网页链接3.Shopee APP下载:安卓版下载链接:https://pan.baidu.com/s/1eSp8M1k#list/path...

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

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

Linux C++实现多线程同步的四种方式(超级详细)

背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#inc...

python-oracledb——利用python连接Oracle数据库的好用方法

这篇文章最早发布在CSDN了,最近想尝试使用一下头条,重新转移过来了。背景介绍之前使用的数据库一直是MySql,偶尔使用PostgreSQL,都是利用的数据库连接池使用;最近需要在Oracle数据库取...

Oracle数据库云服务系列新增前所未有的企业级功能

新推出的关键任务型功能包括:实现容错可用性和按需可扩展性的集群;零数据丢失灾难恢复;Oracle数据库Exadata云服务。甲骨文还宣布推出一项最新免费数据库云服务,数据库管理员和开发人员通过该服务可...