お世話になります。C#独学中の者です。
皆さんのおかげでグラフ作成までこぎ着けた物の、どうしてもわからない場所がまた出てきたので質問させてください。
C#のchartコントロールを使ってグラフを作成しているのですが、X軸の目盛を任意の時間区切りで表示する方法がわかりません。
具体的には目盛りを10:00:00,11:00:00,12:00:00と一時間区切りにしたいのです。
C#
1using System; 2using System.Collections.Generic; 3using System.Text; 4using System.Windows.Forms; 5using System.IO; 6using System.Windows.Forms.DataVisualization.Charting; 7 8namespace グラフ 9{ 10 public partial class Form1 : Form 11 { 12 public Form1() 13 { 14 InitializeComponent(); 15 } 16 17 18 19 private void button1_Click(object sender, EventArgs e) 20 { 21 //textファイルから読み込み 22 int a = 0; 23 List<string> list = new List<string>(); 24 StreamReader sr = new StreamReader("textファイルのパス", Encoding.Default); 25 while (sr.Peek() >= 0) 26 { 27 string line = ""; 28 29 while ((line = sr.ReadLine()) != null) 30 { 31 a++; 32 list.Add(line); 33 } 34 35 } 36 sr.Close(); 37 sr.Dispose(); 38 39 string legend = "グラフ1"; 40 41 chart1.Series.Clear(); //グラフ初期化 42 chart1.ChartAreas[0].AxisY.Maximum = 2.5; 43 chart1.ChartAreas[0].AxisY.Minimum = 1.5; 44 chart1.Series.Add(legend); //グラフ追加 45 chart1.Series[legend].ChartType =SeriesChartType.Line;//折れ線グラフ 46 chart1.Series[legend].LegendText = legend; //凡例に表示するテキストを指定 47 48 for (int i = 0; i < chart1.Series.Count; i++)//凡例非表示 49 { 50 chart1.Series[i].IsVisibleInLegend = false; 51 chart1.Series[i].IsValueShownAsLabel = false; 52 } 53 54 for (int n = 0; n <a; n++) 55 { 56 string[] xValues = new string[] { list[n].Substring(0,8) };//(時間部分「12:34:56」) 57 string[] yValues = new string[] { list[n].Substring(12,4) };//(数値部分「2.34」等) 58 59 for (int i = 0; i < xValues.Length; i++) 60 { 61 //グラフに追加するデータクラスを生成 62 DataPoint dp = new DataPoint(); 63 dp.SetValueXY(xValues[i], yValues[i]); //XとYの値を設定 64 dp.IsValueShownAsLabel = false ; //グラフに値を表示するように指定 65 chart1.Series[legend].Points.Add(dp); //グラフにデータ追加 66 } 67 } 68 } 69 } 70} 71 72
ボタンを押すとtextファイルを読み込んでchartエリアにグラフを表示します。
textデータには「12:34:56」といった形の時間データと数値データが大量に入っています。これをListに格納後、DataPointのX軸に入れています。
現状だとグラフ作成時に勝手に配置された時間がラベルで表示されているので、時間軸の最小値や任意の時間区切りにしたいのですが、Listに入れたままだと型なのでdouble型としてX軸のMinimumなどの値に使う事ができません。
このグラフの場合ですとX軸の起点を12:00:00と表示し、その後1時間毎に目盛りと線を13:00:00,14:00:00・・・最後を17:00:00と表示したいとかんがえています。
何か良い方法は無いでしょうか?
質問の仕方がおかしいかもしれませんが、どうかよろしくおねがいします。
追記:どうやらカスタムラベルという物を使えばやりたいことが出来そうなのですが使い方がわかりません・・・。
回答2件
あなたの回答
tips
プレビュー