Chart Subtype Series XYScatter EmptyDataPointsValueMode or DateTime Starts 1899


https://www.nevron.com/Forum/Topic8185.aspx
Print Topic | Close Window

By Oliver Krieger - 11 Years Ago
Hello all,

I have a datatable which contains the columns "timestamp", "tagname" and "value".
I want to show these values in a chart ordered by tagnames.
Some tags hasn't values for all timestamps, which displayed as a gap and not a staight line.

About this, I configure all series like that: mySeries.Values.EmptyDataPoints.ValueMode = Nevron.Chart.EmptyDataPointsValueMode.Average;

Now if i choose the subtype "series(0)", no gaps will be displayed, but the x labels starts with a date (year 1899).
If i choose the subtype "xyscatter", the gaps will be displayed, but the x lables starts with the right timestamp.

At the end I need no gaps and the right timestamp should be displayed.

How can i solve this problem.

Thanx for your help.


Oli
By Nevron Support - 11 Years Ago

Hi Oliver,

It looks like you have a date-time axis applied to a ordinal (categorical) data because 1899 actually maps to zero, which means that the control plots a label corresponding to the value of 0. Can you send us the rdl or chart template for this chart for further review? A screenshot will also be helpful...

By Oliver Krieger - 11 Years Ago
Hi,

Here are the rdl file.

I found something new at sub type “Series(0)”:

If I set the “Scale Mode” of primary x axis to “Automatic(0)” (before on Numeric (1)), the chart will be displayed the right timestamps, but the scaling of the timestamps doesn’t work. (Short timespan => looks ok, huge timespan => to much scales with labels and to small font size.)


##RDL FILE




Procedure Analyst Procedural Report with Continuous Data



OPC_HDA


ataSourceID>88c11e8d-0a25-4e33-9f2d-398a54bf2d33ataSourceID>


DataSource_Common
ataSourceID>caeb191a-b6eb-41d1-8906-0fe592260904ataSourceID>






PHD Tag
System.String



DataSource_Common
="SELECT [PHD Tag] as [PHD Tag] FROM " & Parameters!sSchema.value & ".[PA_RVW_ALIASMAPPING] where [Equipment Name] = '" & Parameters!Equipment.Value & "' and ALIAS in ('" & Join(Parameters!AliasTag.Value ,"','") & "')"
true





HistTag
System.String


HistTime
System.DateTime


Values
System.Double



DataSource_history
=code.sConcat(Parameters!StartTime.Value,iif(isnothing(Parameters!EndTime.Value)=true, Now(),Parameters!EndTime.Value),Join(Parameters!PHD_Tag.Value,","),Parameters!AFunction.Value,Parameters!NSamples.Value)






NChart

DataSet_History





=Fields!HistTime.Value




=Fields!HistTime.Value




DGT
Categories


Label
=cdate(Fields!HistTime.Value)










=Fields!HistTag.Value




DGT
Series


Label
=Fields!HistTag.Value






DGT
Values


Label
Values











L
=Fields!Values.Value


V
=Fields!Values.Value





19cm
19cm


ChartAreas.Count
1


ChartAreas0.Axes.Depth.ConstRanges.ContainerType
DepthAxis


ChartAreas0.Axes.Depth.Section.ContainerType
DepthAxis


ChartAreas0.Axes.PolarAngle.ConstRanges.ContainerType
PolarRadarAxis


ChartAreas0.Axes.PolarAngle.Section.ContainerType
PolarRadarAxis


ChartAreas0.Axes.PolarValue.ConstRanges.ContainerType
PolarRadarAxis


ChartAreas0.Axes.PolarValue.Section.ContainerType
PolarRadarAxis


ChartAreas0.Axes.PrimaryX.AdvancedScaleSettings.LabelAlignment
MiddleCenter


ChartAreas0.Axes.PrimaryX.AdvancedScaleSettings.LevelOverlapResolveMode
68


ChartAreas0.Axes.PrimaryX.AdvancedScaleSettings.ScaleLevelBottomPadding
5


ChartAreas0.Axes.PrimaryX.AdvancedScaleSettings.ScaleLevelTopPadding
5


ChartAreas0.Axes.PrimaryX.CatScale.GridStyle
None


ChartAreas0.Axes.PrimaryX.CatScale.ShowTicksBetweenDataPoints
False


ChartAreas0.Axes.PrimaryX.ConstRanges.ContainerType
XAxis


ChartAreas0.Axes.PrimaryX.NumericScale.DateTimeScale.DateTimeLabelFormatting.FormattingMode
Fixed


ChartAreas0.Axes.PrimaryX.NumericScale.DateTimeScale.DateTimeLabelFormatting.LabelFormat
g


ChartAreas0.Axes.PrimaryX.NumericScale.DateTimeScale.DateTimeSpan.DateTimeUnit
Tick


ChartAreas0.Axes.PrimaryX.NumericScale.DateTimeScale.MaxCount
5


ChartAreas0.Axes.PrimaryX.NumericScale.DateTimeScale.MinDistance
10


ChartAreas0.Axes.PrimaryX.NumericScale.NumberScale.MinDistance
50


ChartAreas0.Axes.PrimaryX.NumericScale.SubType
DateTime


ChartAreas0.Axes.PrimaryX.NumericScale.ValueTimelineScale.ValueTimelineScaleRow0.DateTimeLabelFormatting.LabelFormat
g


ChartAreas0.Axes.PrimaryX.NumericScale.ValueTimelineScale.ValueTimelineScaleRow1.DateTimeLabelFormatting.FormattingMode
Fixed


ChartAreas0.Axes.PrimaryX.NumericScale.ValueTimelineScale.ValueTimelineScaleRow1.DateTimeLabelFormatting.LabelFormat
g


ChartAreas0.Axes.PrimaryX.NumericScale.ValueTimelineScale.ValueTimelineScaleRow2.DateTimeLabelFormatting.FormattingMode
Fixed


ChartAreas0.Axes.PrimaryX.NumericScale.ValueTimelineScale.ValueTimelineScaleRow2.DateTimeLabelFormatting.LabelFormat
g


ChartAreas0.Axes.PrimaryX.Range.InflateMode
Tick


ChartAreas0.Axes.PrimaryX.Range.InflateRangeBegin
False


ChartAreas0.Axes.PrimaryX.Range.InflateRangeEnd
False


ChartAreas0.Axes.PrimaryX.ScaleMode
Numeric


ChartAreas0.Axes.PrimaryX.Section.ContainerType
XAxis


ChartAreas0.Axes.PrimaryY.ConstRanges.ContainerType
YAxis


ChartAreas0.Axes.PrimaryY.NumericScale.NumberScale.MinDistance
50


ChartAreas0.Axes.PrimaryY.Section.ContainerType
YAxis


ChartAreas0.Axes.Radar.ConstRanges.ContainerType
PolarRadarAxis


ChartAreas0.Axes.Radar.Section.ContainerType
PolarRadarAxis


ChartAreas0.Axes.SecondaryX.ConstRanges.ContainerType
XAxis


ChartAreas0.Axes.SecondaryX.Section.ContainerType
XAxis


ChartAreas0.Axes.SecondaryX.Visibility
Hidden


ChartAreas0.Axes.SecondaryY.ConstRanges.ContainerType
YAxis


ChartAreas0.Axes.SecondaryY.ScaleMode
Numeric


ChartAreas0.Axes.SecondaryY.Section.ContainerType
YAxis


ChartAreas0.ChartType
Line


ChartAreas0.Fx2D.MaxDockZoneMargins.Bottom
50


ChartAreas0.Fx2D.MaxDockZoneMargins.Left
50


ChartAreas0.Fx2D.MaxDockZoneMargins.Right
50


ChartAreas0.Fx2D.MaxDockZoneMargins.Top
50


ChartAreas0.Label Layout.EnableInitialPositioning
True


ChartAreas0.Line.SamplingMode
Enabled


ChartAreas0.StyleSheet.Palette.Count
6


ChartAreas0.StyleSheet.Palette.FillStyle0
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0MjkzNjgxMjAxIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


ChartAreas0.StyleSheet.Palette.FillStyle1
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjg4ODUxMzgyIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


ChartAreas0.StyleSheet.Palette.FillStyle2
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjk0NjkxNzQwIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


ChartAreas0.StyleSheet.Palette.FillStyle3
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjg2MDg4NTgxIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


ChartAreas0.StyleSheet.Palette.FillStyle4
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjk0NDE1OTI4IiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


ChartAreas0.StyleSheet.Palette.FillStyle5
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0MjgyNjY5Njc2IiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


ChartAreasLayout
SingleRow


Code.SourceCode

using System;
using System.Drawing;
using Nevron.GraphicsCore;
using Nevron.Chart;
using Nevron.ReportingServices;

namespace MyNamespace
{
/// <summary>
/// Sample class
/// </summary>
public class MyClass
{

/// <summary>
/// Main entry point
/// </summary>
/// <param name="context"></param>
public static void RSMain(NRSChartCodeContext context)
{
Color[] lineColors = new Color[]
{
Color.Blue,
Color.DarkOrange,
Color.Red,
Color.Green,
Color.DarkOrchid,
Color.DarkCyan,
Color.BlueViolet,
Color.Brown,
Color.DarkTurquoise,
Color.Magenta,
Color.DarkGray,
Color.Navy,
Color.Teal,
Color.CadetBlue,
Color.Coral,
Color.Black,
Color.DeepPink,
Color.Chocolate,
Color.SpringGreen,
Color.Peru

};
string soutput;
if (context.Document.Charts.Count == 0)
return;
// get the first chart in the document
NChart chart = context.Document.Charts[0];
if (chart.Series.Count == 0)
return;

soutput = chart.Series.Count.ToString();
NLineSeries point = chart.Series[0] as NLineSeries;
if (point == null)
return;

for (int i = 0; i < chart.Series.Count; i++)
{
// create a custom Y axis
NCartesianAxisCollection axes = (NCartesianAxisCollection)chart.Axes;
NAxis axisY = axes.AddCustomAxis(AxisOrientation.Vertical, AxisDockZone.FrontLeft);
axisY.Anchor = new NDockAxisAnchor(AxisDockZone.FrontLeft, true, 0, 100);

// create the scale
NLinearScaleConfigurator scaleY = new NLinearScaleConfigurator();
axisY.ScaleConfigurator = scaleY;

axisY.Visible = true;


//NLineSeries lineSeries = chart.Series[i] as NLineSeries;
NXYScatterSeries lineSeries = chart.Series[i] as NXYScatterSeries;



if (lineSeries != null)
{
lineSeries.BorderStyle.Color = lineColors[i % lineColors.Length];
lineSeries.BorderStyle.Width = new NLength(2, NGraphicsUnit.Pixel);
lineSeries.DisplayOnAxis(StandardAxis.PrimaryY, false);
lineSeries.DisplayOnAxis(axisY.AxisId, true);

scaleY.RulerStyle.BorderStyle.Color = lineSeries.BorderStyle.Color;
scaleY.RulerStyle.BorderStyle.Width = lineSeries.BorderStyle.Width;

//scaleY.MajorGridStyle.SetShowAtWall(ChartWallType.Back, true);
//scaleY.MajorGridStyle.LineStyle.Color = lineSeries.BorderStyle.Color;
//scaleY.MajorGridStyle.LineStyle.Pattern = LinePattern.DashDot;

scaleY.LabelStyle.TextStyle.FillStyle = new NColorFillStyle(lineSeries.BorderStyle.Color);
scaleY.LabelStyle.TextStyle.FontStyle = new NFontStyle("Verdana", 8);

scaleY.OuterMajorTickStyle.LineStyle.Color = lineSeries.BorderStyle.Color;
scaleY.InnerMajorTickStyle.LineStyle.Color = lineSeries.BorderStyle.Color;

lineSeries.Values.EmptyDataPoints.ValueMode = Nevron.Chart.EmptyDataPointsValueMode.Average;
}
}

}
}
}



Legends.Count
1


Legends0.ItemsLayout
FixedCols


Legends0.Position.DockPosition
BottomCenter


LicenseKey
af4519a6-5517-0174-beb8-159f4a003c06,b329d416-0503-689b-1502-9c83ca940cbd


Margins.Bottom
5


Margins.Left
5


Margins.Right
5


Margins.Top
5


Padding.Bottom
5


Padding.Left
5


Padding.Right
5


Padding.Top
5


StyleSheet.Palette.Count
6


StyleSheet.Palette.FillStyle0
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0MjkzNjgxMjAxIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


StyleSheet.Palette.FillStyle1
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjg4ODUxMzgyIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


StyleSheet.Palette.FillStyle2
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjk0NjkxNzQwIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


StyleSheet.Palette.FillStyle3
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjg2MDg4NTgxIiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


StyleSheet.Palette.FillStyle4
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0Mjk0NDE1OTI4IiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+


StyleSheet.Palette.FillStyle5
EmbeddedFJvb3Q+DQogIDxPYmplY3QgdHlwZUlkPSIwIiBuYW1lPSJSb290Ij4NCiAgICA8QXR0cmlidXRlcyBDb2xvcj0iMjI7MCw0MjgyNjY5Njc2IiBNYXRlcmlhbFN0eWxlPSIyMjsiIEltYWdlRmlsdGVycz0iMjE7IiAvPg0KICA8L09iamVjdD4NCiAgPElkVHlwZVRhYmxlPg0KICAgIDxLZXlWYWx1ZVBhaXIgS2V5PSIwIiBWYWx1ZT0iTmV2cm9uLkdyYXBoaWNzQ29yZS5OQ29sb3JGaWxsU3R5bGUiIC8+DQogIDwvSWRUeXBlVGFibGU+DQo8L1Jvb3Q+







7.48031in
By Oliver Krieger - 11 Years Ago
Sorry, the attachments doesn't work.

I rename the rdl file with extension png!!