Golang绘制心电图显示异常:所得结果不符合预期
Golang绘制心电图显示异常排查
问题描述
用Golang绘制心电图时出现显示异常,无法定位根本原因。怀疑是缩放设置错误,但不排除其他诱因。
实现代码
import ( "fmt" "github.com/fogleman/gg" "io/ioutil" "log" "strconv" "strings" ) const ( Width = 800 Height = 600 MajorGridSpaces = 5 MinorGridSpaces = MajorGridSpaces * 5 MinorGridSpacing = Width / float64(MinorGridSpaces) SmallSquareSize = MinorGridSpacing / 5 ) func main() { encodedData, err := ioutil.ReadFile("/Users/piter/PycharmProjects/ecg/decoded_data.txt") if err != nil { log.Fatal(err) } dataStrings := strings.Split(string(encodedData), " ") var ecgData []float64 for i := 0; i < len(dataStrings); i += 13 { value, err := strconv.ParseFloat(dataStrings[i], 64) if err != nil { log.Fatalf("Error: %v", err) } ecgData = append(ecgData, value) } dc := gg.NewContext(Width, Height) dc.SetRGB(1, 1, 1) dc.Clear() dc.SetRGBA(0.6, 0.6, 0.6, 0.8) for x := 0.0; x <= Width; x += MinorGridSpacing { dc.DrawLine(x, 0, x, Height) } for y := 0.0; y <= Height; y += MinorGridSpacing { dc.DrawLine(0, y, Width, y) } for x := 0.0; x < Width; x += MinorGridSpacing { for y := 0.0; y < Height; y += MinorGridSpacing { for i := 0; i < 5; i++ { for j := 0; j < 5; j++ { dc.DrawRectangle(x+float64(i)*SmallSquareSize, y+float64(j)*SmallSquareSize, SmallSquareSize, SmallSquareSize) } } } } dc.SetLineWidth(0.2) dc.Stroke() dc.SetRGBA(0, 0, 0, 1) dc.SetLineWidth(0.5) xStep := Width / float64(len(ecgData)-1) for i := 0; i < len(ecgData)-1; i++ { x1 := float64(i) * xStep y1 := Height/2 - ecgData[i]*(Height/2)/50 x2 := float64(i+1) * xStep y2 := Height/2 - ecgData[i+1]*(Height/2)/50 dc.DrawLine(x1, y1, x2, y2) } dc.Stroke() if err := dc.SavePNG("ecg_with_grid.png"); err != nil { log.Fatal(err) } }
示例数据
ecgData := []float64{ 0.04878048780487805, -0.06341463414634146, -0.014634146341463415, 0.05609756097560976, -0.01707317073170732, -0.03902439024390244, -0.004878048780487805, -0.01951219512195122, -0.08292682926829269, -0.09268292682926829, -0.06829268292682927, -0.05365853658536585, -0.04878048780487805, -0.06341463414634146, -0.014634146341463415, 0.05609756097560976, -0.01707317073170732, -0.03902439024390244, -0.004878048780487805, -0.024390243902439025, -0.08292682926829269, -0.09268292682926829, .... }
预期效果

实际异常效果

内容的提问来源于stack exchange,提问作者Jenny F
相关产品推荐
相关产品推荐

