首页 > 解决方案 > 如何从通过串口从机器接收到的点构建图表?

问题描述

将点转换为图表

我通过串口从机器获取数据。如何将其转换为图表。以下是我的数据

WBC graph
Scale(fl):  400
Channels:   256
WMarker1:   11
WMarker2    40
WMarker3:   70
Points: 0   0   0   0   0   0   0   0   0   0   0   5   7   9   12  17
        22  29  37  48  61  78  97  119 141 163 183 200 216 229 239 248
        253 254 252 247 237 225 211 197 182 168 154 142 131 119 108 97  
        87  77  69  62  57  52  47  43  39  36  32  30  29  28  27  27  
        26  26  26  26  25  25  25  25  25  26  26  27  27  28  28  29  
        30  30  31  32  34  35  37  38  39  40  41  41  42  43  45  46  
        46  47  46  45  44  43  42  41  41  40  40  40  41  42  44  45  
        47  47  48  48  47  46  45  44  43  42  41  40  39  39  39  39  
        39  38  37  37  36  36  35  35  34  34  34  34  34  34  33  32
        31  29  28  27  25  24  23  22  21  21  21  21  21  21  21  20  
        20  19  18  18  17  16  16  15  15  14  14  13  12  11  10  9   
        9   9   9   9   9   8   7   7   6   6   6   6   6   5   5   5
        5   5   5   5   5   5   4   4   3   3   3   2   2   2   2   1   
        1   1   1   1   1   1   1   1   1   1   1   0   0   0   1   1   
        1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   
        1   1   1   1   1   1   1   1   1   1   0   0   0   0   0   0

标签: vb.net

解决方案


例如,这些文章会有所帮助。
.NET 图表入门
如何在 vb.net
中使用 MS Chart Control VB 绘制连续线图交互式图表

应为新项目/解决方案添加对以下两个的引用:

System.Text
System.Windows.Forms.DataVisualization.Charting

假设工具箱中的以下两个控件已添加到表单窗口中:
假设 TextBox 包含问题中描述的内容的文本。

Chart Control
TextBox Control

如果将以下程序粘贴到按钮单击事件处理程序中并执行它,则可以显示图表。
顺便说一句,如果已经有数字字符串或整数数组数据,则可以缩短 从TextBox1.Textto到to的转换过程。values1values1series1

Chart1.Titles.Clear()
Chart1.Titles.Add("WBC graph")

Chart1.ChartAreas.Clear()
Dim area1 As New ChartArea()
area1.AxisX.Title = "Sample Number"
area1.AxisY.Title = "Count"
area1.AxisY.Maximum = 400
area1.AxisY.Minimum = 0
area1.AxisX.Maximum = 256  ' Added if you want to fix the range.
area1.AxisX.Minimum = 0    '
Chart1.ChartAreas.Add(area1)

Dim values1 As String()
values1 = TextBox1.Text.Substring((TextBox1.Text.IndexOf("Points:") + 8)).Split(New String() {" ", "\t", "\r", "\n", vbCrLf, ","}, StringSplitOptions.RemoveEmptyEntries)

Dim series1 As New Series()
series1.ChartType = SeriesChartType.Line
series1.LegendText = "Cell Count"
For Each s In values1
    series1.Points.Add(Integer.Parse(s))
Next

Chart1.Series.Clear()
Chart1.Series.Add(series1)

结果的一个例子。

示例图表结果


另外:
如果您不想在样本数很少的情况下改变X轴范围,您可以在设置area1属性时将X轴最小/最大值设置为固定值。
添加到源。


推荐阅读