private static void AddAnnotation(List <Annotation> annotations, List <object> x, Color baseColour, Dictionary <string, Color> colourMap, int startIndex, string startName, int i) { var bar = new LineAnnotation(); if (colourMap.ContainsKey(startName)) { bar.colour = colourMap[startName]; } else { bar.colour = ColourUtilities.ChangeColorBrightness(baseColour, colourMap.Count * 0.2); colourMap.Add(startName, bar.colour); } bar.type = LineType.Dot; bar.x1 = x[startIndex]; bar.y1 = double.MinValue; bar.x2 = x[i - 1]; bar.y2 = double.MaxValue; bar.InFrontOfSeries = false; bar.ToolTip = startName; annotations.Add(bar); }
/// <summary>Set visual aspects (colour, line type, marker type) of the series definition.</summary> /// <param name="seriesDefinition">The definition to paint.</param> public void Paint(SeriesDefinition seriesDefinition) { seriesDefinition.Colour = ColourUtilities.ChangeColorBrightness(seriesDefinition.Colour, seriesDefinition.ColourModifier); seriesDefinition.Line = lineType; seriesDefinition.Marker = markerType; }
/// <summary>A static setter function for colour from an index.</summary> /// <param name="definition">The series definition to change.</param> /// <param name="index">The colour index into the colour palette.</param> public static void SetColour(SeriesDefinition definition, int index) { definition.Colour = ColourUtilities.ChangeColorBrightness(ColourUtilities.Colours[index], definition.ColourModifier); }
/// <summary>Called by the graph presenter to get a list of all annotations to put on the graph.</summary> /// <param name="annotations">A list of annotations to add to.</param> public void GetAnnotationsToPutOnGraph(List <Annotation> annotations) { Graph parentGraph = Parent.Parent as Graph; if (data != null && ColumnName != null && xFieldName != null) { string columnName = FindColumn(data); if (columnName != null && data.Columns.Contains(xFieldName)) { string[] names = DataTableUtilities.GetColumnAsStrings(data, columnName); List <object> x; Type columnType = data.Columns[xFieldName].DataType; if (columnType == typeof(DateTime)) { x = DataTableUtilities.GetColumnAsDates(data, xFieldName).Cast <object>().ToList(); } else if (columnType == typeof(int)) { x = DataTableUtilities.GetColumnAsIntegers(data, xFieldName).Cast <object>().ToList(); } else if (columnType == typeof(double)) { x = DataTableUtilities.GetColumnAsDoubles(data, xFieldName).Cast <object>().ToList(); } else { throw new Exception($"Error in EventNamesOnGraph {Name}: unknown column type '{columnType.FullName}' in column '{xFieldName}'"); } if (names.Length == x.Count) { var baseColour = Color.LightBlue; var colourMap = new Dictionary <string, Color>(); int startIndex = -1; string startName = string.Empty; for (int i = 0; i < names.Length; i++) { if (names[i] != "?" && !string.IsNullOrEmpty(names[i])) { if (startIndex == -1) { startIndex = i; startName = names[i]; } else if (names[i] != startName) { // Add a line annotation. var bar = new LineAnnotation(); if (colourMap.ContainsKey(startName)) { bar.colour = colourMap[startName]; } else { bar.colour = ColourUtilities.ChangeColorBrightness(baseColour, colourMap.Count * 0.2); colourMap.Add(startName, bar.colour); } bar.type = LineType.Dot; bar.x1 = x[startIndex]; bar.y1 = double.MinValue; bar.x2 = x[i - 1]; bar.y2 = double.MaxValue; bar.InFrontOfSeries = false; bar.ToolTip = startName; annotations.Add(bar); startName = names[i]; startIndex = i; } } } } } } }