• WPF散点图学习


    一、 初始化界面

    RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;
    • 这行代码设置了渲染模式为软件渲染模式。在 WPF(Windows Presentation Foundation)中,渲染模式决定了图形和界面元素如何在屏幕上绘制和呈现。软件渲染模式通常用于在不支持硬件加速的环境中进行图形绘制,或者在需要更高兼容性和稳定性的场景下使用。
    InitializeComponent();
    • 这是一个 WPF 中常见的语句,用于初始化当前窗体或用户控件的组件。它通常在窗体或用户控件的构造函数中调用,用来加载 XAML 中定义的界面元素和布局。
    var dataSeries1 = new XyDataSeries<int, int>();

    这段代码创建了一个 XyDataSeries 对象,该对象可以存储和管理 X 轴和 Y 轴均为整数类型的数据。这个对象可以用来添加、删除和操作图表中的数据点,从而在图表中展示这些数据

    二、创建一系列近似于正弦的模拟数据

    1. double dou = 0; // 定义一个双精度浮点数变量
    2. int XAxisLen = 2047; // 设置了X轴的长度,也是数据的个数
    3. Random random = new Random(); // 创建随机数生成器
    4. for (int i = 0; i < XAxisLen; i++) // 循环生成模拟数据
    5. {
    6. double noise = random.NextDouble() * 50 - 25; // 生成范围随机噪声
    7. int yValue = (int)(Math.Sin(dou) * 200 + noise + 400); // 设置峰值并加上偏移量
    8. dataSeries1.Append(i, yValue); // 向原始数据系列添加数据点
    9. dou += 0.003; // 增加之后周期变短
    10. }
    • double dou = 0;

      • 定义一个名为 dou 的双精度浮点数变量,并初始化为 0。
      • 这个变量将在循环中用于计算正弦波的值。
    • int XAxisLen = 2047;

      • 定义一个名为 XAxisLen 的整数变量,并将其设置为 2047。
      • 这个变量表示 X 轴的长度,也是生成的数据点的个数。
    • Random random = new Random();

      • 创建一个 Random 类的实例 random,用于生成随机数。
      • Random 类提供生成伪随机数的功能。
    • for (int i = 0; i < XAxisLen; i++)

      • 使用 for 循环来生成模拟数据,循环次数为 XAxisLen(即 2047 次)。
      • i 是循环变量,从 0 开始,每次循环递增 1,直到小于 XAxisLen
    • double noise = random.NextDouble() * 50 - 25;

      • 生成一个范围在 [-25, 25) 之间的随机噪声。
      • random.NextDouble() 生成一个范围在 [0.0, 1.0) 的双精度浮点数,将其乘以 50 后减去 25,即得到范围为 [-25, 25) 的噪声值。
    • int yValue = (int)(Math.Sin(dou) * 200 + noise + 400);

      • 计算 y 轴的值 yValue
      • 使用 Math.Sin(dou) 计算 dou 的正弦值,并将其放大 200 倍,然后加上噪声和偏移量 400。
      • 将结果转换为整数类型。
    • dataSeries1.Append(i, yValue);

      • 将计算得到的 (i, yValue) 数据点添加到 dataSeries1 数据系列中。
      • i 作为 x 轴的值,yValue 作为 y 轴的值。
    • dou += 0.003;

      • 在每次循环后,将 dou 增加 0.003。
      • 这样可以在每次循环中逐渐增加正弦函数的输入值,生成连续的正弦波形数据。

    三、散点图的创建

    1. lineSeries1 = new XyScatterRenderableSeries // 创建一个散点图系列
    2. {
    3. DataSeries = dataSeries1, // 设置数据系列
    4. PointMarker = new EllipsePointMarker { Width = 2, Height = 2, Fill = Colors.White }, // 设置点标记样式
    5. YAxisId = "LeftYAxis" // 设置 Y 轴 ID
    6. };
    • lineSeries1 = new XyScatterRenderableSeries

      • 创建一个 XyScatterRenderableSeries 对象并将其赋值给 lineSeries1 变量。
      • XyScatterRenderableSeries 是用于绘制散点图的类。
    • DataSeries = dataSeries1,

      • 将之前创建并填充的数据系列 dataSeries1 赋值给 lineSeries1DataSeries 属性。
      • 这意味着 lineSeries1 将使用 dataSeries1 中的数据来绘制散点图。
    • PointMarker = new EllipsePointMarker { Width = 2, Height = 2, Fill = Colors.White },

      • 设置散点图中点的标记样式。
      • PointMarker 属性被赋值为一个新的 EllipsePointMarker 对象。
      • EllipsePointMarker 是一个椭圆形的点标记,其 WidthHeight 属性被设置为 2,表示点的大小为 2 像素。
      • Fill = Colors.White 设置点的填充颜色为白色。
    • YAxisId = "LeftYAxis"

      • 设置散点图系列使用的 Y 轴的 ID 为 "LeftYAxis"
      • 这意味着 lineSeries1 将使用 ID 为 "LeftYAxis" 的 Y 轴。

     sciChart.RenderableSeries.Add(lineSeries1); //

    • 添加散点图系列到 SciChart 中
       
  • 相关阅读:
    【OJ题目】选择客栈 | 公司新表
    2024年环境安全科学、材料工程与制造国际学术会议(ESSMEM2024)
    IDEA插件Mybatis Log Plugin的安装及其使用教程
    【JAVA学习笔记】47 - 异常,try-catch处理,throw处理
    配置WampServer在局域网内通过内网IP访问(解决403 Forbidden问题)
    【PyTorch深度学习项目实战100例】—— 基于Transformer实现人格个性指示 | 第67例
    Flink之Watermark生成策略
    ubuntu 解决pip/pip3安装库各种报错问题
    速览 NFT 期权赛道代表项目与发展前景
    基于51单片机数字温度报警器_DS18B20可调上下限
  • 原文地址:https://blog.csdn.net/Fourglsl/article/details/139796318