QA@IT

C# C1Chart時刻指定で表示

7909 PV

mogumoguと申します。いつもお世話になっております。

GrapCity社のCompornentStdioの中でC1Chartというグラフツールを使って、折れ線グラフを書こうとしております。
そこで、X座標にDateTypeを"System.DateTime"にして時刻を表示しようとしたのですが、X座標項目に値が表示されませんでした。

X座標には日時を、Y座標には数値を指定しております。

環境は C#2010Pro WIndows7です。

それでは失礼します。

回答

X軸の軸ラベルの書式を変更すれば表示されるのではないでしょうか。

試しに以下を実行したらそれっぽいものは表示されました。

using System;
using System.Windows.Forms;
using C1.Win.C1Chart;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            var c1Chart1 = new C1Chart 
            {
                Text = "Test",
                Dock = DockStyle.Fill
            };
            this.Controls.Add(c1Chart1);

            c1Chart1.ChartGroups.Group0.ChartType = Chart2DTypeEnum.XYPlot;

            var series = c1Chart1.ChartGroups.Group0.ChartData.SeriesList.AddNewSeries();

            series.X.CopyDataIn(new[] { DateTime.Now.AddMinutes(-10), DateTime.Now, DateTime.Now.AddMinutes(10) });
            series.Y.CopyDataIn(new[] { 50, 10, 100 });

            c1Chart1.ChartArea.AxisY.Min = 0;
            c1Chart1.ChartArea.AxisY.Max = 100;

            c1Chart1.ChartArea.AxisX.Text = "X";
            c1Chart1.ChartArea.AxisY.Text = "Y";

            c1Chart1.ChartArea.AxisX.AnnoFormat = FormatEnum.DateShortTime;
        }
    }
}

最後の AnnoFormat が書式の指定です。

2013/07/22 追記

目盛単位については Axis オブジェクトの UnitMajor, UnitMinor プロパティで設定します。
これらのプロパティは double 型ですが、日時の場合は「日数」を指定すればよいみたいです。

仮に X 軸の主目盛を5分、副目盛を1分間隔とするなら

    c1Chart1.ChartArea.AxisX.UnitMajor = new TimeSpan(0, 5, 0).TotalDays;
    c1Chart1.ChartArea.AxisX.UnitMinor = new TimeSpan(0, 1, 0).TotalDays;

のような感じで。

編集 履歴 (1)
  • 回答ありがとうございます。
    参考にいたします。

    ちなみに、ご存知でしたら目盛り間隔の設定のことも教えていただければ
    うれしいです。
    -
  • 軸目盛について追記しました。ご参考まで。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。