VB.NET 给Series加一个小数点
VB.NET add a decimal Point to Series
以下函数为图表创建多个系列。
Function createSeries(ByVal fileNames() As String, ByVal intValXAxis As Integer, ByVal intValYAxis As Integer) As Series()
Dim ChartSeries(fileNames.Count) As Series
Dim i As Integer = 0
For Each filename In fileNames
ChartSeries(i) = New Series
ChartSeries(i).ChartType = SeriesChartType.FastLine
ChartSeries(i).ChartArea = "ChartArea1"
If filename.Contains("NOK") = True Then
ChartSeries(i).Color = Color.Red
ChartSeries(i).BorderWidth = 3
Else
ChartSeries(i).Color = Color.Green
End If
Dim fileReader = My.Computer.FileSystem.OpenTextFileReader(filename)
Do
Dim strCache() As String = Split(fileReader.ReadLine(), ";")
ChartSeries(i).Points.AddXY(strCache(intValXAxis - 1), strCache(intValYAxis - 1))
ChartSeries(i).ToolTip = filename
Loop Until fileReader.EndOfStream = True
i += 1
Next
Return ChartSeries
End Function
我遇到的问题是,我创建的系列的 Y 值大多是这样的:0,09440104 或 0,1757813。我需要这些值按原样显示在图表上,但是零被删除并且 Y 点值是:9440104 或 1757813
在将它们添加到系列之前,我尝试用 "Globalization" 格式化它们,但它并没有解决问题。
明确一点:我希望上面显示的数字(0,09440104 和 0,1757813)是点的 Y 值。
我该如何解决这个问题?
提前致谢。
默认情况下,En-US
文化会将您的逗号 ","
视为千位分隔符,从而将您的数据视为 > 0
而不是 < 0
。
您有两个选择:更改区域性或更改字符串格式。如果您所有的数字都小于 1000
(或者,更准确地说,没有 .
作为千位分隔符),我建议只需将 ,
替换为 .
Dim strCache() As String = Split(fileReader.ReadLine(), ";")
Dim repStrX = strCache(intValXAxis - 1).Replace(",",".")
Dim repStrY = strCache(intValYAxis - 1).Replace(",",".")
ChartSeries(i).Points.AddXY(repStrX , repStrY)
或者,如果它们的值大于 1000
(或者更准确地说,没有 .
作为千位分隔符),在不指定文化的情况下,您也可以使用Replace
有一些技巧:利用不存在的字符作为中间值在原始 string
.
中的 .
和 ,
之间翻转
Dim strCache() As String = Split(fileReader.ReadLine(), ";")
Dim repStrX = strCache(intValXAxis - 1).Replace(",","G").Replace(".",",").Replace("G",".")
Dim repStrY = strCache(intValYAxis - 1).Replace(",","G").Replace(".",",").Replace("G",".")
ChartSeries(i).Points.AddXY(repStrX , repStrY)
以下函数为图表创建多个系列。
Function createSeries(ByVal fileNames() As String, ByVal intValXAxis As Integer, ByVal intValYAxis As Integer) As Series()
Dim ChartSeries(fileNames.Count) As Series
Dim i As Integer = 0
For Each filename In fileNames
ChartSeries(i) = New Series
ChartSeries(i).ChartType = SeriesChartType.FastLine
ChartSeries(i).ChartArea = "ChartArea1"
If filename.Contains("NOK") = True Then
ChartSeries(i).Color = Color.Red
ChartSeries(i).BorderWidth = 3
Else
ChartSeries(i).Color = Color.Green
End If
Dim fileReader = My.Computer.FileSystem.OpenTextFileReader(filename)
Do
Dim strCache() As String = Split(fileReader.ReadLine(), ";")
ChartSeries(i).Points.AddXY(strCache(intValXAxis - 1), strCache(intValYAxis - 1))
ChartSeries(i).ToolTip = filename
Loop Until fileReader.EndOfStream = True
i += 1
Next
Return ChartSeries
End Function
我遇到的问题是,我创建的系列的 Y 值大多是这样的:0,09440104 或 0,1757813。我需要这些值按原样显示在图表上,但是零被删除并且 Y 点值是:9440104 或 1757813
在将它们添加到系列之前,我尝试用 "Globalization" 格式化它们,但它并没有解决问题。
明确一点:我希望上面显示的数字(0,09440104 和 0,1757813)是点的 Y 值。
我该如何解决这个问题?
提前致谢。
默认情况下,En-US
文化会将您的逗号 ","
视为千位分隔符,从而将您的数据视为 > 0
而不是 < 0
。
您有两个选择:更改区域性或更改字符串格式。如果您所有的数字都小于 1000
(或者,更准确地说,没有 .
作为千位分隔符),我建议只需将 ,
替换为 .
Dim strCache() As String = Split(fileReader.ReadLine(), ";")
Dim repStrX = strCache(intValXAxis - 1).Replace(",",".")
Dim repStrY = strCache(intValYAxis - 1).Replace(",",".")
ChartSeries(i).Points.AddXY(repStrX , repStrY)
或者,如果它们的值大于 1000
(或者更准确地说,没有 .
作为千位分隔符),在不指定文化的情况下,您也可以使用Replace
有一些技巧:利用不存在的字符作为中间值在原始 string
.
.
和 ,
之间翻转
Dim strCache() As String = Split(fileReader.ReadLine(), ";")
Dim repStrX = strCache(intValXAxis - 1).Replace(",","G").Replace(".",",").Replace("G",".")
Dim repStrY = strCache(intValYAxis - 1).Replace(",","G").Replace(".",",").Replace("G",".")
ChartSeries(i).Points.AddXY(repStrX , repStrY)