c# - 每个 StackedColumn 单个 StackedColumnSeries
问题描述
我正在从 JQPlot 迁移并将 fireFox 嵌入到 Livecharts。
我的功能几乎相同,但我现在遇到了一个可能的障碍。
我的堆叠列数据集将包含第一个堆叠列的大量值(212 个条目),但随后第二个堆叠列将急剧减少。
查看代码我将不得不创建 212 个独立的 StackedColumnSeries 并为 X 轴上的每个条目指定值(31 个条目)
有没有办法可以指定单个 X 轴的值?这意味着最火的 StackedColumnSeries 将包含 212 个条目,但第二个将仅包含大约 100 个条目。这意味着我可以使用 StackedColumnSeries 上的 Tag 属性来存储对用于点击的对象的引用。
我在下面提供了示例代码,说明我在这个过程中取得了多大的进步。
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,
});
解决方案
由于我没有足够的代表发表评论,因此我将添加此作为答案,但更多的是评论。目前,LiveCharts StackedColumn 系列无法完成您要求做的事情。所有列都将包含相同数量的系列,只是有些列不包含值。
推荐阅读
- reactjs - 在卸载时保留反应组件状态
- perl - 函数定义改变了 <> 的外在行为
- smtp - 如何计算 DKIM SIGNATURE 中的“b”参数
- c++ - Dr. Memory:这些线真的会导致内存泄漏吗?
- pandas - 我有一个数据框,我想找到某些特定单元格的标准偏差
- apache-spark - 无法从 pyspark 连接到 s3 存储桶
- html - 制作带有图片的员工联系表,我需要使其具有响应性
- google-app-maker - 如何以编程方式将新创建的记录链接到另一个表中的记录
- javascript - Add a duration to a repeating event's start time so that it's end is always the same time (i.e 2pm to 4 pm)
- python - 如何与同事共享 jupyter notebook(需要虚拟私有云)?