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

質問編集履歴

1

コード等の追記を行いました。

2019/03/13 08:01

投稿

kuniyan
kuniyan

スコア13

title CHANGED
File without changes
body CHANGED
@@ -3,4 +3,109 @@
3
3
 
4
4
  今までは、日付をX軸に持ってきていたので、DateTimeAxisを使用すれば簡単に出来ていたのですが、、、
5
5
 
6
- 何かいい方法がありましたら、教えていただければ幸いです。
6
+ 何かいい方法がありましたら、教えていただければ幸いです。
7
+
8
+ **-- 現在**
9
+ ```C#
10
+ class Data
11
+ {
12
+ public double ID { get; set; }
13
+ public DateTime date { get; set; }
14
+ public string Items { get; set; }
15
+ public double Value1 { get; set; }
16
+ public double Value2 { get; set; }
17
+ }
18
+ ```
19
+ ```C#
20
+ class Test
21
+ {
22
+ public ReactiveCollection<Data> Datas { get; } = new ReactiveCollection<Data>();
23
+
24
+      public void GePlots()
25
+ {
26
+ // テスト用にデータを入れる
27
+ for (int i = 0; i < 5; i++)
28
+ {
29
+ var item = "XXXX" + i.ToString();
30
+ double v1 = 52.0 + i;
31
+ double v2 = 61.0 + i;
32
+ int i2 = i + 1;
33
+ string dt = "2019/01/0" + i2.ToString();
34
+ Datas.Add(new Data { ID = i, date = DateTime.Parse(dt), items = lot, Value1 = v1, Value2 = v2 });
35
+ }
36
+
37
+
38
+ var plotTest = new PlotModel()
39
+ {
40
+ PlotAreaBorderColor = OxyColors.LightGray,
41
+ TextColor = OxyColors.LightGray
42
+ };
43
+
44
+   // OxyPlot X軸
45
+ var axisX = new LinearAxis()
46
+ {
47
+ Title = "Time",
48
+ Position = AxisPosition.Bottom,
49
+ TickStyle = TickStyle.None,
50
+ MajorGridlineStyle = LineStyle.Solid,
51
+ MajorGridlineColor = OxyColors.Gray,
52
+ StringFormat = "yyyy/MM/dd",
53
+ Angle = -90
54
+ };
55
+
56
+ // OxyPlot Y軸
57
+ var axisY = new LinearAxis()
58
+ {
59
+ Title = "Values",
60
+ Position = AxisPosition.Left,
61
+ TickStyle = TickStyle.None,
62
+ MajorGridlineStyle = LineStyle.Solid,
63
+ MajorGridlineColor = OxyColors.Gray,
64
+ MinorGridlineStyle = LineStyle.Dot,
65
+ MinorGridlineColor = OxyColors.Gray
66
+ };
67
+
68
+
69
+ plotTest.Series.Add(new LineSeries()
70
+ {
71
+
72
+ Title = "Value1",
73
+ ItemsSource = Datas,
74
+ DataFieldX = "date",
75
+ DataFieldY = "Value1",
76
+ //MarkerType = MarkerType.Circle,
77
+ MarkerSize = 3,
78
+ //MarkerStroke = OxyColors.Red,
79
+ MarkerStrokeThickness = 1,
80
+ //MarkerFill = OxyColors.Red,
81
+ //Color = OxyColors.Red,
82
+ IsVisible = chkPT201.Value,
83
+ RenderInLegend = true
84
+ });
85
+
86
+ plotTest.Series.Add(new LineSeries()
87
+ {
88
+ Title = "Value2",
89
+ ItemsSource = Datas,
90
+ DataFieldX = "date",
91
+ DataFieldY = "Value2",
92
+ //MarkerType = MarkerType.Circle,
93
+ MarkerSize = 3,
94
+ //MarkerStroke = OxyColors.Red,
95
+ MarkerStrokeThickness = 1,
96
+ MarkerFill = OxyColors.Red,
97
+ //Color = OxyColors.Red,
98
+ IsVisible = chkPT201.Value,
99
+ RenderInLegend = true
100
+ });
101
+ }
102
+ }
103
+ ```
104
+ (適当で申し訳ありません)
105
+ ![イメージ説明](2f799f2f016dfac53d11431916b688f3.jpeg)
106
+
107
+ **-- 理想**
108
+  各LineSeriesの DataFieldXに"Items"の項目(XXXX0-4)を表示するのが理想です。
109
+   LabelFormatterを使おうと考えましたが案の定できませんでした。。
110
+   また、LinearAxis以外の軸も試してみましたが、文字列が許容されていそうなものは見当たりません。
111
+  この程度の情報で申し訳ありませんがよろしくお願いいたします。