2016-06-02 4 views
0

В настоящее время у меня есть несколько присущи рефлективные, вербальный TeeChart, что я добавил вот так:Datetime X-ось для серии Boxplot в TeeChart

seriesIndex = 0; 
foreach(var dataGroup in DataGroups) //Each dataGroup contains all the ParameterValues at a specific point in time 
{ 
    var series = new Box() { ... } 
    var values = dataGroup.ParameterValues; 
    series.Add(seriesIndex, values); 
    seriesIndex++; 
    Chart.Series.Add(series); 
} 

Я хочу, чтобы преобразовать это так, что ось Й использует значение DateTime (как указано ниже):

var timeIndex = dataGroup.TimeSeriesIndex; 

Однако метод добавления класса Box не поддерживает значения DateTime. И когда я использую унаследованный (из базового класса Series) метод Add(DateTime, double) (внутри цикла foreach), все значения DateTime становятся 12 AM December 31, 1899, которые я признаю базовым значением для DateTime.ToOADate. Это заставляет меня думать, что я не правильно вводил данные в серию. Может кто-нибудь указать мне в правильном направлении?

ответ

2

все значения DateTime становятся 12 AM 31 декабря 1899 года, которые я признаю базовым значением для DateTime.ToOADate.

Именно так работает вертикальная коробка в TeeChart. Позиция X определяется ее Position property, которая по умолчанию равна нулю. Чтобы достичь того, что вы запрашиваете, вы должны установить позицию для каждого графика. Это можно сделать, назначив свойство Position или через specific add method override, как показано в фрагменте кода ниже. Для меток DateTime вы можете просто установить XValues.DateTime в true и позволить TeeChart автоматически рассчитывать метки или использовать трюк с ярлыками, показанный в этом коде:

tChart1.Aspect.View3D = false; 

    var boxSeries1 = new Steema.TeeChart.Styles.Box(tChart1.Chart); 
    var boxSeries2 = new Steema.TeeChart.Styles.Box(tChart1.Chart); 
    var boxSeries3 = new Steema.TeeChart.Styles.Box(tChart1.Chart); 

    boxSeries1.Add(DateTime.Now.AddDays(0).ToOADate(), new double[6] { 3, 6, 8, 15, 19, 21 }); 
    boxSeries2.Add(DateTime.Now.AddDays(1).ToOADate(), new double[4] { 5, 7, 12, 21 }); 
    boxSeries3.Add(DateTime.Now.AddDays(2).ToOADate(), new double[5] { 6, 7, 8, 15, 21 }); 

    // A simple trick to force custom axis labels on bottom axis. 
    // In this case, series titles 
    Steema.TeeChart.AxisLabelsItems labels = tChart1.Axes.Bottom.Labels.Items; 
    labels.Clear(); 

    foreach (Steema.TeeChart.Styles.Box b in tChart1.Series) 
    { 
    b.XValues.DateTime = true; 
    labels.Add(b.Position); 
    } 

    tChart1.Axes.Bottom.Labels.DateTimeFormat = "dd/MM/yyyy hh:mm"; 
Смежные вопросы