千万级数据处理无压力,媲美matplotlib的图表组件库

今天给大家介绍一个功能完善, 性能强悍的图表组件库 ScottPlot, 当我第一次在 github 上看到这个库, 我看不懂,但我大受震撼, 这么好的项目当然要分享出来了。

今天给大家介绍一个功能完善, 性能强悍的图表组件库 ScottPlot, 当我第一次在 github 上看到这个库, 我看不懂,但我大受震撼, 这么好的项目当然要分享出来了。

https://github.com/ScottPlot/ScottPlot

ScottPlot 是一个 .NET 图表组件, 主要有以下特点:

  • 适用范围广:同时适用于 WinForms, WPF, Avalonia, Console, 支持 .NET Framework 4.6.1 及以上, NET Core 2.0 至 .NET 5。
  • 上手简单:只需几行代码即可创建折线图、条形图、饼图、散点图等。
  • 性能强悍:千万级数据处理无压力, 媲美 Python Matplotlib。
  • 可交互:支持用户和图表数据进行交互, 注入灵魂。
  • 开源免费:基于MIT开源协议, 已经开源近5年, 不存在版权和收费问题
  • 组件丰富:图表组件非常全面,可满足各种场景下的展示需求。

千万级数据处理无压力,媲美matplotlib的图表组件库

图表接入

⚡ Winform

  1. 通过Nuget安装 ScottPlot.WinForms。
  2. 安装完成后, 就可以在工具箱找到 ScottPlot 组件, 然后拖到 Winform 窗体上。
  3. 填充图表数据, 完成!
double[] dataX = new double[] {1, 2, 3, 4, 5};double[] dataY = new double[] {1, 4, 9, 16, 25};formsPlot1.Plot.AddScatter(dataX, dataY);formsPlot1.Refresh();

千万级数据处理无压力,媲美matplotlib的图表组件库

⚡ WPF

  1. 通过Nuget安装 ScottPlot.WPF
  2. 添加一个 WpfPlot 组件到布局中, 并设置Name
<WpfPlot Name="WpfPlot1" />
  1. 同样, 填充图表数据, 完成!
double[] dataX = new double[] { 1, 2, 3, 4, 5 };double[] dataY = new double[] { 1, 4, 9, 16, 25 };WpfPlot1.Plot.AddScatter(dataX, dataY);WpfPlot1.Refresh();

千万级数据处理无压力,媲美matplotlib的图表组件库

⚡ Console App

当然也可以在控制台应用中使用该图表组件, 和上面不同的是, 它会渲染成一张图片, 然后可以保存到本地

  1. 通过Nuget安装 ScottPlot
  2. 填充图表数据并保存为图片

千万级数据处理无压力,媲美matplotlib的图表组件库

图表示例

千万级数据处理无压力,媲美matplotlib的图表组件库

千万级数据处理无压力,媲美matplotlib的图表组件库

千万级数据处理无压力,媲美matplotlib的图表组件库

千万级数据处理无压力,媲美matplotlib的图表组件库

项目背后的故事

wow, 很优秀的开源项目, 但其实我还想分享一些项目背后的故事, 因为这非常有意义!

ScottPlot 图表库 的作者是 Scott W Harden, 他是一名生物研究科学家, 目前在神经科学实验室工作, 他的主要专业是分子生物学、牙科和神经科学, 但是也对计算机编程和电气工程充满热情, 所以偶尔会编写代码来完成与科学研究相关的任务。

千万级数据处理无压力,媲美matplotlib的图表组件库

像很多科学家一样, Scott 也使用 Python 流行的的 matplotlib 处理数据, 但是发现在给一些不太懂计算机的用户安装软件时, 总会出现一些环境问题, 配置问题等等, 所以他在2017年做了个决定, 学习.NET 技术栈, 主要用来开发用于科学研究的桌面应用程序。

但是问题来了, 当他尝试用 C# 绘制 WAV 文件中的数据时,发现非常困难, Python 中的微不足道的任务在 C# 中似乎非常困难, 虽然有免费的图表库, 但是当加载了千万级的数据时就开始有各种问题了,有一些商业图表库好像可以用,但既复杂又昂贵, 有些库仅适用于 Winforms,有些仅适用于 WPF,而且许多库具有复杂的数据对象模型,对于 .NET 新手来说非常难以理解, 于是作者就自己实现了图表组件, 这就是 ScottPlot 初版, 然后就开源在了github, 经过几年的逐步更新迭代, ScottPlot 变成了一个功能丰富, 成熟稳定的图表组件库。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/119432.html

(0)

相关推荐

  • 福特探险者有没有优惠,福特探险者首付多少钱

    文章长度:0太短了,请勿浪费资源

    生活 2021年11月3日
  • 荣耀play4tpro升级magic3.1后耗电快,荣耀magic2刷miui

    前言:如果是在以前,我基本上不会考虑荣耀的手机的,性价比比不过小米,高端比不过华为,尤其在荣耀被华为卖了之后,今年的v40、v40轻奢、荣耀50都被很多人视为智商机,这种手机我也不会去关注,不存在性价比。

    科技 2021年10月27日
  • 儿子,你妈妈为什么打你?给那些在育儿路上背负着一千英镑重担的父母。

    孩子,为什么打你?你突然插嘴道:妈妈,你经常打一个人,那就是我。。。。你就是个打人魔王。。。。。孩子,你那固执的一句,仿佛爬山虎无数细小的卷须,攀满我的整个心灵。面对你纯真无暇的眼睛,我要承认:在这个世界上,我只打过一个人。不是偶然,而是经常。不是轻描淡写,而是刻苦铭心。这个人就是你。在你很小的时候,我不曾打你。你那么幼嫩,好像一粒包在荚中的青豌豆。我生怕任何一点轻微的碰撞,将你稚弱的生命擦伤。我为你无日无夜地操劳,无怨无悔。面对你熟睡中像合欢一样静谧的额头,我向上苍发誓:我要尽一个母亲所有的力量护你周全,直到我从这颗星球上离开的那一天。你像竹笋一样开始长大。你开始淘气 开始恶作剧。面对你把我手机往滚烫稀饭里扔,面对你摔破碗盆,拆毁的玩具,遗失的钱币,污脏的衣物。。。。我都不曾打过你。我想对于一个正常而活泼的儿童,像走路会跌跤一样应该原谅。第一次打你的起因,已经记不清了。人们对于痛苦的记忆,总是趋向于忘记。总而言之那时你已渐渐懂事,初步具备童年人的智慧:它混沌天真又我行我素,它狡黠异常又漏同百出。你像一匹顽皮的小兽,放任无羁地奔向你向往中的草原,而我则要接受人类公认的法则。为了让你记住并终生遵守它们,在所有的苦口婆心,黔驴技穷都宣告失败,在所有的夸奖,批评,恐吓以及奖赏都无以建树之后,我被迫拿出最后一件武器——这就是殴打。假如你去摸火,火焰灼痛你的手指,这种体验将使你一生不会再去抚摸这种橙红色,抖动如绸的精灵。孩子,我希望虚伪,懦弱,残忍,狡诈这些最肮脏的品质,当你初次与它们接触时,就感到切肤的疼痛,从此与他们永远隔绝。我知道打人犯法,但这个世界给了为人父母者一项特殊的赦免——打是爱。世人将这一份特权赋予母亲,当我行驶它的时候臂系千钧。我尽量克制谨慎地使用殴打,犹如一个穷人使用他最后的金钱。每次打你的时候,我的心都在轻轻颤抖。我一次又一次问自己:是不是到了非打不可的地步?不打他我还有没有其他的办法?只有当所有的努力都归于失败,孩子,我才会举起我的手。每一次打过你之后,我都要深深自责。假如惩罚我自身可以使你汲取教训,孩子,我宁愿自罚,哪怕它将苛烈十倍。但我知道,责罚不可以替代也无法转让,它如同饥馑中的食品,只有你自己嚼碎了咽下去,才会成为你生命体验中的一部分。这些道理可能有些深奥,也许要到你为人父母时,才会理解。打人是个重体力活,它使人肩酸腕痛,好像徒手将一千块蜂窝煤搬上五楼。于是人们便发明了打人的工具:戒尺,鞋底,鸡毛掸子。。。我从不用那些工具。打人的人用了多大的力,便要遭受同样的反作用力,这是一条力学定律。我愿在打你的同时我的手指亲自承受力的反弹,遭受与你相等的苦痛。这样我才可以精确地掌握力度,不至于失手将你打得太重。妈妈,并不是一定要打你,但一定要打你。只因为我是你的母亲,每个母亲把孩子带到这个世界来,都希望扶着孩子上马走一程。教他学习,做人,以便以后更好地迎接生命中出现惊涛飓浪。共勉!各位家长。

    生活 2021年12月14日
  • 肥胖成为全球危害,在美国目前官方认为肥胖是一种疾病

    作者:ASHLEY GEARHARDT和JOHANNES HEBEBRAND目前,科学家们正在积极讨论高度加工食品是否会让人上瘾,以及这是否会导致我们在全球范围内继续无法减少肥胖和…

    生活 2021年12月3日
  • 我是怎么缓解自己的压力的

    不知道很多人有没有像笔者一样,经常失眠、多梦、记忆力减退、神经衰弱、容易疲劳这种现象。什么?你不知道什么是失眠多梦?好吧,笔者之前也没有意识到自己是失眠、多梦。

    生活 2021年9月18日