teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

編集

2020/09/07 12:44

投稿

tsuki01
tsuki01

スコア1751

answer CHANGED
@@ -23,102 +23,8 @@
23
23
  lineDataSet.circleColors = circleColors
24
24
  ```
25
25
 
26
- **動作結果(25番目の要素だけ丸ポチ表示)**
27
- ![実行例](bfce0cdd8bade2cecae1d985ea3378c6.png)
28
-
29
26
  ---
30
27
 
31
- **サンプル処理全体**
28
+ **動作結果(25番目要素だけ丸ポチ表示)**
32
29
  ※右記記事の処理を応用:[iOS-Chartsの始め方](https://qiita.com/ioschartsman/items/2e510d311cc4fcd25608)
33
- ```Swift
34
- import UIKit
35
- import Charts
36
-
37
- class ViewController: UIViewController {
38
-
39
- var chart: CombinedChartView!
40
- var lineDataSet: LineChartDataSet!
41
- var bubbleDataSet: BubbleChartDataSet!
42
-
43
- override func viewDidLoad() {
44
- super.viewDidLoad()
45
-
46
- //combinedDataを結合グラフに設定する
47
- let combinedData = CombinedChartData()
48
-
49
- //結合グラフに線グラフのデータ読み出し
50
- combinedData.lineData = generateLineData()
51
-
52
- //グラフのサイズ設定、座標設定
53
- chart = CombinedChartView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width , height: self.view.frame.height - 20))
54
-
55
- //chartのデータにcombinedDataを挿入する
56
- chart.data = combinedData
57
-
58
- //chartを出力
59
- self.view.addSubview(chart)
60
-
61
- }
62
-
63
- override func didReceiveMemoryWarning() {
30
+ ![実行例](bfce0cdd8bade2cecae1d985ea3378c6.png)
64
- super.didReceiveMemoryWarning()
65
- // Dispose of any resources that can be recreated.
66
- }
67
-
68
-
69
- func generateLineData() -> LineChartData
70
- {
71
-
72
- //リストを作り、グラフのデータを追加する方法(GitHubにあったCombinedChartViewとかMPAndroidChartのwikiを参考にしている
73
- //データを入れていく、多重配列ではないため別々にデータは追加していく
74
- let values: [Double] = [0, 254, 321, 512, 214, 444, 967, 101, 765, 228,
75
- 726, 253, 20, 123, 512, 448, 557, 223, 465, 291,
76
- 979, 134, 864, 481, 405, 711, 1106, 411, 455, 761]
77
- let date : [Double] = [1,2,3,4,5,6,7,8,9,10,
78
- 11,12,13,14,15,16,17,18,19,20,
79
- 21,22,23,24,25,26,27,28,29,30]
80
-
81
- //DataSetを行うために必要なEntryの変数を作る データによって入れるデータが違うため複数のentriesが必要になる?
82
- var entries: [ChartDataEntry] = Array()
83
- for (i, value) in values.enumerated(){
84
- entries.append(ChartDataEntry(x: date[i], y: value, icon: UIImage(named: "icon", in: Bundle(for: self.classForCoder), compatibleWith: nil)))
85
- }
86
-
87
- //データを送るためのDataSet変数をリストで作る
88
- var linedata: [LineChartDataSet] = Array()
89
-
90
- //リストにデータを入れるためにデータを成形している
91
- //データの数値と名前を決める
92
- lineDataSet = LineChartDataSet(entries: entries, label: "Line chart unit test data")
93
- lineDataSet.drawIconsEnabled = false
94
- //グラフの線の色とマルの色を変えている
95
- lineDataSet.colors = [NSUIColor.red]
96
-
97
- // ==================================================
98
- // MARK: 編集スタート
99
- // カラー配列生成(データ数分ループさせる)
100
- // ※特定要素(今回は25番目)の時だけ色指定する
101
- var circleColors = [NSUIColor]()
102
- for i in 0 ..< date.count {
103
- if date[i] == 25.0 {
104
- circleColors.append(UIColor.red)
105
- } else {
106
- circleColors.append(UIColor.clear)
107
- }
108
- }
109
-
110
- // LineChartDataSetのカラー配列に、上記配列指定
111
- //lineDataSet.circleColors = [NSUIColor.red]
112
- lineDataSet.circleColors = circleColors
113
- // // ==================================================
114
-
115
- //上で作ったデータをリストにappendで入れる
116
- linedata.append(lineDataSet)
117
-
118
- //データを返す。
119
- return LineChartData(dataSets: linedata)
120
- }
121
-
122
- }
123
-
124
- ```

1

編集

2020/09/07 12:44

投稿

tsuki01
tsuki01

スコア1751

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  ※もっとスマートな方法があったら申し訳ありません。
2
2
 
3
- 以下リンク先などを参考に、特定の要素の時のみ色を指定するのは実現できないでしょうか。
3
+ 以下リンク先などを参考に、特定の要素の時のみ、カラー配列の色を指定するのは実現できないでしょうか。
4
- ・特定要素の時:丸ポチの色を指定
4
+ ・特定要素の時  任意の丸ポチの色を指定
5
- ・特定要素以外の時:丸ポチの色をClear指定
5
+ ・特定要素以外の時:丸ポチの色は透過指定
6
6
 
7
7
  [change the color of the highlight point](https://github.com/danielgindi/Charts/issues/2334)
8
8
 
@@ -24,4 +24,101 @@
24
24
  ```
25
25
 
26
26
  **動作結果(25番目の要素だけ丸ポチ表示)**
27
- ![実行例](bfce0cdd8bade2cecae1d985ea3378c6.png)
27
+ ![実行例](bfce0cdd8bade2cecae1d985ea3378c6.png)
28
+
29
+ ---
30
+
31
+ **サンプルの処理全体**
32
+ ※右記記事の処理を応用:[iOS-Chartsの始め方](https://qiita.com/ioschartsman/items/2e510d311cc4fcd25608)
33
+ ```Swift
34
+ import UIKit
35
+ import Charts
36
+
37
+ class ViewController: UIViewController {
38
+
39
+ var chart: CombinedChartView!
40
+ var lineDataSet: LineChartDataSet!
41
+ var bubbleDataSet: BubbleChartDataSet!
42
+
43
+ override func viewDidLoad() {
44
+ super.viewDidLoad()
45
+
46
+ //combinedDataを結合グラフに設定する
47
+ let combinedData = CombinedChartData()
48
+
49
+ //結合グラフに線グラフのデータ読み出し
50
+ combinedData.lineData = generateLineData()
51
+
52
+ //グラフのサイズ設定、座標設定
53
+ chart = CombinedChartView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width , height: self.view.frame.height - 20))
54
+
55
+ //chartのデータにcombinedDataを挿入する
56
+ chart.data = combinedData
57
+
58
+ //chartを出力
59
+ self.view.addSubview(chart)
60
+
61
+ }
62
+
63
+ override func didReceiveMemoryWarning() {
64
+ super.didReceiveMemoryWarning()
65
+ // Dispose of any resources that can be recreated.
66
+ }
67
+
68
+
69
+ func generateLineData() -> LineChartData
70
+ {
71
+
72
+ //リストを作り、グラフのデータを追加する方法(GitHubにあったCombinedChartViewとかMPAndroidChartのwikiを参考にしている
73
+ //データを入れていく、多重配列ではないため別々にデータは追加していく
74
+ let values: [Double] = [0, 254, 321, 512, 214, 444, 967, 101, 765, 228,
75
+ 726, 253, 20, 123, 512, 448, 557, 223, 465, 291,
76
+ 979, 134, 864, 481, 405, 711, 1106, 411, 455, 761]
77
+ let date : [Double] = [1,2,3,4,5,6,7,8,9,10,
78
+ 11,12,13,14,15,16,17,18,19,20,
79
+ 21,22,23,24,25,26,27,28,29,30]
80
+
81
+ //DataSetを行うために必要なEntryの変数を作る データによって入れるデータが違うため複数のentriesが必要になる?
82
+ var entries: [ChartDataEntry] = Array()
83
+ for (i, value) in values.enumerated(){
84
+ entries.append(ChartDataEntry(x: date[i], y: value, icon: UIImage(named: "icon", in: Bundle(for: self.classForCoder), compatibleWith: nil)))
85
+ }
86
+
87
+ //データを送るためのDataSet変数をリストで作る
88
+ var linedata: [LineChartDataSet] = Array()
89
+
90
+ //リストにデータを入れるためにデータを成形している
91
+ //データの数値と名前を決める
92
+ lineDataSet = LineChartDataSet(entries: entries, label: "Line chart unit test data")
93
+ lineDataSet.drawIconsEnabled = false
94
+ //グラフの線の色とマルの色を変えている
95
+ lineDataSet.colors = [NSUIColor.red]
96
+
97
+ // ==================================================
98
+ // MARK: 編集スタート
99
+ // カラー配列生成(データ数分ループさせる)
100
+ // ※特定要素(今回は25番目)の時だけ色指定する
101
+ var circleColors = [NSUIColor]()
102
+ for i in 0 ..< date.count {
103
+ if date[i] == 25.0 {
104
+ circleColors.append(UIColor.red)
105
+ } else {
106
+ circleColors.append(UIColor.clear)
107
+ }
108
+ }
109
+
110
+ // LineChartDataSetのカラー配列に、上記配列指定
111
+ //lineDataSet.circleColors = [NSUIColor.red]
112
+ lineDataSet.circleColors = circleColors
113
+ // // ==================================================
114
+
115
+ //上で作ったデータをリストにappendで入れる
116
+ linedata.append(lineDataSet)
117
+
118
+ //データを返す。
119
+ return LineChartData(dataSets: linedata)
120
+ }
121
+
122
+ }
123
+
124
+ ```