###前提・実現したいこと
X-codeにてswiftを用いて、心電図の状態をリアルタイムで表示するものを作成したく思っております。
###発生している問題・エラーメッセージ
現状下記のようなグラフを表示させるとこまで辿り着くことができました(参照ライブラリ)。ただ、リアルタイムで最新の値をグラフに追加していくグラフをどのように実装すべきかがわかりません。
###該当のソースコード
swift
1import UIKit 2import ScrollableGraphView 3 4class EcgDailyViewController: UIViewController { 5 6 @IBOutlet weak var ecgGraph: UIView! 7 8 var graphView = ScrollableGraphView() 9 var label = UILabel() 10 let numberOfDataItems = 29 11 lazy var data: [Double] = self.generateRandomData(self.numberOfDataItems, max: 50) 12 lazy var labels: [String] = self.generateSequentialLabels(self.numberOfDataItems, text: "Time") 13 14 15 override func viewDidLoad() { 16 super.viewDidLoad() 17 18 createDarkGraph() 19 graphView.set(data: data, withLabels: labels) 20 self.ecgGraph.clipsToBounds = true 21 self.ecgGraph.addSubview(graphView) 22 23 } 24 25 override func viewDidLayoutSubviews() { 26 super.viewDidLayoutSubviews() 27 28 let rect = CGRect(x:0, y:0, width:ecgGraph.frame.width, height:ecgGraph.frame.height) //Swift3.0 29 graphView.frame = rect 30 } 31 32 fileprivate func createDarkGraph() { 33 34 graphView.backgroundFillColor = UIColor.colorFromHex(hexString: "#333333") 35 36 graphView.lineWidth = 1 37 graphView.lineColor = UIColor.colorFromHex(hexString: "#777777") 38 graphView.lineStyle = ScrollableGraphViewLineStyle.smooth 39 40 graphView.shouldFill = true 41 graphView.fillType = ScrollableGraphViewFillType.gradient 42 graphView.fillColor = UIColor.colorFromHex(hexString: "#555555") 43 graphView.fillGradientType = ScrollableGraphViewGradientType.linear 44 graphView.fillGradientStartColor = UIColor.colorFromHex(hexString: "#555555") 45 graphView.fillGradientEndColor = UIColor.colorFromHex(hexString: "#444444") 46 47 graphView.dataPointSpacing = 80 48 graphView.dataPointSize = 2 49 graphView.dataPointFillColor = UIColor.white 50 51 graphView.referenceLineLabelFont = UIFont.boldSystemFont(ofSize: 8) 52 graphView.referenceLineColor = UIColor.white.withAlphaComponent(0.2) 53 graphView.referenceLineLabelColor = UIColor.white 54 graphView.numberOfIntermediateReferenceLines = 5 55 graphView.dataPointLabelColor = UIColor.white.withAlphaComponent(0.5) 56 57 graphView.shouldAnimateOnStartup = true 58 graphView.shouldAdaptRange = true 59 graphView.adaptAnimationType = ScrollableGraphViewAnimationType.elastic 60 graphView.animationDuration = 1.5 61 graphView.rangeMax = 50 62 graphView.shouldRangeAlwaysStartAtZero = true 63 64 return 65 } 66 67 private func generateRandomData(_ numberOfItems: Int, max: Double) -> [Double] { 68 var data = [Double]() 69 for _ in 0 ..< numberOfItems { 70 var randomNumber = Double(arc4random()).truncatingRemainder(dividingBy: max) 71 72 if(arc4random() % 100 < 10) { 73 randomNumber *= 3 74 } 75 76 data.append(randomNumber) 77 } 78 return data 79 } 80 81 private func generateSequentialLabels(_ numberOfItems: Int, text: String) -> [String] { 82 var labels = [String]() 83 for i in 0 ..< numberOfItems { 84 labels.append("\(text) \(i+1)") 85 } 86 return labels 87 } 88 89 override func didReceiveMemoryWarning() { 90 super.didReceiveMemoryWarning() 91 } 92 93 94}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/04 12:32
2016/11/04 14:05
2016/11/04 16:37
2016/11/05 07:10
2016/11/05 08:52