I am in the middle of a potential migration away from JQPlot and embeded fireFox to Livecharts.
I have the functionality nearly the same but I have now hit a possible snag.
My dataset for the stacked columns will contain a large number of values for the first stacked column (212 entries) but then it will reduce sharply by the second stacked column.
Looking at the code I would have to create 212 inidividual StackedColumnSeries and specifiy the values for each entry on the X Axis (31 entries)
Is there a way I can specify the values for a single X Axis? This would mean the firest StackedColumnSeries would contain 212 entries, but the second would only contain around 100. this would then mean I can use the Tag property on the StackedColumnSeries to store a reference to an object used for the click through.
I have provided example code below as to how far I have gotten with this process.
var SeriesCollection = new SeriesCollection{
new StackedColumnSeries
{
Values = new ChartValues<double> { 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8},
Tag = new List<string>{"KEY0001", "KEY0002", "KEY0003", "ETC" }
},
new StackedColumnSeries
{
Values = new ChartValues<double>{5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8},
Tag = new List<string>{"KEY0011", "KEY0012", "KEY0013", "ETC" }
},
new StackedColumnSeries
{
Values = new ChartValues<double>{0, 5, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5},
Tag = new List<string>{"KEY0021", "KEY0022", "KEY0023", "ETC" }
},
new StackedColumnSeries
{
Values = new ChartValues<double>{0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15},
Tag = new List<string>{"KEY0031", "KEY0032", "KEY0033", "ETC" }
},
new StackedColumnSeries
{
Values = new ChartValues<double>{0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8},
Tag = new List<string>{"KEY0041", "KEY0042", "KEY0043", "ETC" }
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},
new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},new StackedColumnSeries
{
Values = new ChartValues<double>{8},
},new StackedColumnSeries
{
Values = new ChartValues<double>{8},
}
};
SeriesCollection.Add(new LineSeries
{
Title = "Machine",
Values = new ChartValues<decimal> { 16, 16, 16, 0, 0, 16, 8, 8, 16, 16, 16, 0, 0, 16, 8, 8, 16, 16, 16, 0, 0, 16, 8, 8, 16, 16, 16, 0, 0, 16, 8 },
Stroke = new SolidColorBrush(System.Windows.Media.Color.FromScRgb((float)0.5, 100, 100, 100)),
Fill = new SolidColorBrush(System.Windows.Media.Color.FromScRgb((float)0.5, 100, 100, 100))
});
SeriesCollection.Add(new LineSeries
{
Title = "Employee",
Values = new ChartValues<decimal> { 24, 24, 16, 0, 0, 16, 16, 16, 24, 24, 16, 0, 0, 16, 16, 16, 24, 24, 16, 0, 0, 16, 16, 16, 24, 24, 16, 0, 0, 16, 16 },
});
cartesianChart1.Series = SeriesCollection;
//8
cartesianChart1.AxisX.Add(new Axis
{
Title = "Month",
Labels = new[] { "03/05/2018", "04/05/2018", "05/05/2018", "06/05/2018", "07/05/2018", "08/05/2018", "09/05/2018", "10/05/2018" ,
"11/05/2018" , "12/05/2018" , "13/05/2018" , "14/05/2018" , "15/05/2018" , "16/05/2018" , "17/05/2018" , "18/05/2018" ,
"19/05/2018" , "20/05/2018" , "21/05/2018" , "22/05/2018" , "23/05/2018" , "24/05/2018" , "25/05/2018" , "26/05/2018" ,
"27/05/2018" , "28/05/2018" , "29/05/2018" , "30/05/2018" , "31/05/2018" , "01/06/2018", "02/06/2018" },
Separator = DefaultAxes.CleanSeparator,
MinValue = 0,
MaxValue = 14
});
cartesianChart1.AxisY.Add(new Axis
{
Title = "Hours",
LabelFormatter = value => value.ToString("N"), //convert it to a number
MinValue = 0,
});
As I don't have enough rep to comment, I will just add this as an answer but its more of a comment. What you are asking to do can't be done with the LiveCharts StackedColumn Series as at the moment. All the columns would contain the same amount of series, just some would not contain values.