aardio调用C# ZedGraph画图表

By jerryxjr1220 at 2022-07-01 • 0人收藏 • 473人看过

基本介绍

编辑 播报


ZedGraph 是一个开源的.NET图表类库, 全部代码都是用C#开发的。它可以利用任意的数据集合创建2D的线性和柱形图表。 

特性

编辑 播报


ZedGraph 的类库具有很高的灵活性。几乎图表的每个层面都可以被用户修改。同时,为了保证类库的易用性,所有的图表属性都提供了缺省值。类库中包含的代码可以根据被划分的数据来选择适应的比例范围和步长、尺寸。 ZedGraph 继承了Framework中的UserControl接口,所以允许用户在VS 的IDE 环境中 进行拖放操作。增加了对其它语言的访问接口支持,如C+ + ,VB。

d8f9d72a6059252dfed10f60349b033b5ab5b98b.png

import win.ui;
/*DSG{{*/
mainForm = win.form(text="ZedGraph";right=959;bottom=591;composited=1)
mainForm.add(
custom={cls="custom";text="自定义控件";left=17;top=40;right=938;bottom=573;z=1}
)
/*}}*/

import dotNet;
import System.Drawing;
import System.Windows.Forms;
dll = dotNet.loadFile("\res\ZedGraph.dll");
//创建图表容器
zedGraphCtrl = dll.new("ZedGraphControl");
System.Windows.Forms.CreateEmbed(zedGraphCtrl, mainForm.custom);

//获取画板
graphPane = zedGraphCtrl.GraphPane;
//创建数据
list = dll.new("PointPairList");
list.Add(1, 10);
list.Add(2, 15);
list.Add(3, 26);
list.Add(4, 17);
list.Add(5, 20);
//添加柱状图
graphPane.AddBar("Test Bar", list, System.Drawing.Color.Brown);

//画到zedGraphControl控件中,此句必加
zedGraphCtrl.AxisChange();
zedGraphCtrl.Refresh();

mainForm.show();

return win.loopMessage();

//mainForm需开启双缓冲

ZedGraph.7z


ZedGraph可以更自由地定义组件式样,不像Nplot的式样有很多幺蛾子的问题。

但是,ZedGraph图表种类不像Nplot那么丰富,但一般常规用用也够用了。

8 个回复 | 最后更新于 2022-07-04
2022-07-01   #1
//折线图
ZedGraph = dll.import("ZedGraph")
graphPane.AddCurve("Test Bar", list, System.Drawing.Color.Brown, ZedGraph.SymbolType.None);

screenshots.gif

动态数据也完全没问题

2022-07-01   #2

感谢分享,我现在是动态的用st-Curve, 静态的用scottplot,三维的用ligntningchart

2022-07-01   #3

回复#2 @admin :

其实之前用scottplot也没啥问题,后来导入数据的时候不知道为啥经过dotNet.double转换后就显示不出来了,只能换Nplot画图表。但Nplot的画笔式样调整起来太蛋疼了,又去找了ZedGraph。反正总是各有优缺点,可以满足使用就好

2022-07-01   #4

回复#3 @jerryxjr1220 :

有double失败的代码吗?

我好像没遇到过你说的问题....

2022-07-01   #5

回复#4 @admin :

也有可能和我采样的数据有关,就是应变片的毫伏值数据,总共近4000组数据。

但是用Nplot和ZedGraph都没问题,可以正常显示。

//代码其实也没啥特别的
//data就是我采集的数据列表,转换就是下面的语句
var newdata = dotNet.double(data)

2022-07-01   #6

回复#5 @jerryxjr1220 :

scottplot有三种提供数据的方法,直接用plot.Ys=data,可以不用dotnet.double包装。

2022-07-02   #7

爱你们,千千万万次...

2022-07-04   #8

回复#6 @admin :

我重新试了一下ScottPlot

import dotNet;
import System.Drawing;
import System.Windows.Forms;
dotNet.reference({
	"ScottPlot" = "/res/ScottPlot.dll";
	"WinForms" = "/res/ScottPlot.WinForms.dll";
});

ScottPlot = dotNet.load("ScottPlot");
WinForms = dotNet.load("WinForms");

Chart = WinForms.new("ScottPlot.FormsPlot");

plt = Chart.Plot;

data = table.array(3900, 0);
xs = table.array(3900, 0);
for i=1;3900 {
	data[i] = math.random(1, 100);
	xs[i] = i;
}

plt.AddScatter(xs, data);

System.Windows.Forms.CreateEmbed(Chart, mainForm.custom);

是可以正常显示的, 不用dotNet.double就正常了。


完美了

无标题.png

登录后方可回帖

登 录
信息栏
公告:
个人博客
专注分享
谢谢合作!

本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
打赏本站
Loading...