C#科学绘图库ScottPlot

2023-12-15 05:04:58

安装和准备

ScottPlot是基于.Net的一款开源免费的交互式可视化库,支持Winform和WPF等UI框架,本文示例在WPF环境中运行。在VS的菜单栏->工具->NuGet包管理器->管理解决方案的NuGet程序包->在浏览选项卡的搜索框里输入ScottPlot,找到ScottPlot.WPF,然后安装。

为了演示ScottPlot.WPF的基本功能,做如下布局,其中WrapPanel用于防止控制按钮,名为ScottPlot的集装箱用于防止ScottPlot的绘图组件

<TabControl TabStripPlacement="Left">
    <TabItem Header="科学绘图">
        <DockPanel LastChildFill="True">
            <WrapPanel DockPanel.Dock="Right">
            </WrapPanel>
            <GroupBox Header="ScottPlot">
            </GroupBox>
        </DockPanel>
    </TabItem>
</TabControl>

其中,TabStripPlacement属性指定选项卡选项卡条位置为左侧。TabItem是TabControl中的一个选项卡,Header属性指定了选项卡标题为“科学绘图”。DockPanel是一个布局控件,LastChildFill属性指定了最后一个子元素(即GroupBox)填充剩余空间。WrapPanel是另一个布局控件,DockPanel.Dock属性指定了它位于DockPanel的右侧。GroupBox是一个带有标题和边框的容器控件,Header属性指定了它的标题为“ScottPlot”。

初步使用

为了使用ScottPlot,首先在xaml的Window标签中,添加

xmlns:ScottPlot="clr-namespace:ScottPlot;assembly=ScottPlot.WPF"

在GroupPanel中添加

<ScottPlot:WpfPlot x:Name="plt" />

然后在WrapPanel中添加一个按钮,其点击事件的内容为

private void btnSin_Click(object sender, RoutedEventArgs e)
{
    var xs = Enumerable.Range(0, 1000)
                       .Select(x => x / 100.0).ToArray();
    var ys = xs.Select(x => Math.Sin(x)).ToArray();

    plt.Plot.AddScatter(xs, ys);
    plt.Refresh();
}

其中, x s xs xs是从 0 0 0 10 10 10均等间隔的 1000 1000 1000个数, y = sin ? x y=\sin x y=sinx

则点击按钮之后,执行plt.Plot.AddScatter命令,并调用Refresh刷新图形,可以得到

在这里插入图片描述

鼠标点击之后可以拖动,触摸板双指放大,双击之后会显示渲染时长。此外,右键菜单提供了保存图像、复制图像、缩放到合适尺寸,以及在新窗口打开等功能。

简单的设置

新建一组输入框和按钮,按钮的点击事件如下,当点击按钮时,可将图像的标题、X与Y轴的内容设置为输入框中的文本

private void btnSet_Click(object sender, RoutedEventArgs e)
{
    plt.Plot.Title(tbTitle.Text);
    plt.Plot.XLabel(tbAxisX.Text);
    plt.Plot.YLabel(tbAxisY.Text);
}

效果如下

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_37816922/article/details/134795742
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。