ColumnSeries 中每个值的不同颜色
Different colors for each value in a ColumnSeries
我在 WPF 中使用 LiveCharts 创建一个包含列的笛卡尔图表。这些值来自一个列表,该列表又填充了数据库中的值。
一切正常,除了我希望每一列都有不同的填充。什么颜色无关紧要,只是每个单独列的随机颜色。另外,我不想为每个值创建一个新系列,因为值太多了。
类似问题中的 Mappers 方法对我不起作用,因为该示例会根据值的高低改变颜色。我想为每个不同的轴标签使用不同的颜色。
这是我创建系列的代码部分:
cartesianChart.Series.Add(new ColumnSeries
{
Title = "Column Chart: ",
Fill = Brushes.CadetBlue,
Values = valuesList.AsChartValues(),
DataLabels = true,
LabelPoint = point => (point.Y).ToString(),
});
图表是这样的:
如有任何想法,我们将不胜感激。
试试数据点 class:
DataPoint p=new DataPoint(chart1.Series["Celler"]);
p.SetValueY(cellVoltage[cell]);
p.Label=cellname[cell];//string
p.Color=Color.FromArgb(255 - cell * 20, 255, 80cell*20);
chart1.Series["Celler"].Points.Add(p);
如果您在 LiveCharts 中使用 SeriesCollection,它会自动为集合中的每个系列分配不同的颜色。
对于这个例子,我从我的一个项目中提取了一个片段,它添加了多个系列,并有一个包含所有系列名称的单独列表。这将循环并将每个系列添加到集合中,并从列表中添加系列数据和系列名称。
实时图表齿轮示例:
SeriesCollection = new LiveCharts.SeriesCollection();
List<GearedValues<long>> seriesList = new List<GearedValues<long>>();
seriesList.Add(Data1.AsGearedValues().WithQuality(Quality.Low));
seriesList.Add(Data2.AsGearedValues().WithQuality(Quality.Low));
for(int i = 0; i < seriesName.Count(); ++i)
{
SeriesCollection.Add(new GColumnSeries
{
Values = seriesList[i],
Name = seriesName[i],
Fill = System.Windows.Media.Brushes.Transparent,
StrokeThickness = 1,
PointGeometry = null,
LineSmoothness = 0,
});
}
标准实时图表示例
SeriesCollection = new LiveCharts.SeriesCollection();
List<ChartValues<long>> seriesList = new List<ChartValues<long>>();
seriesList.Add(Data1);
seriesList.Add(Data2);
for(int i = 0; i < seriesName.Count(); ++i)
{
SeriesCollection.Add(new ColumnSeries
{
Values = seriesList[i],
Name = seriesName[i],
Fill = System.Windows.Media.Brushes.Transparent,
StrokeThickness = 1,
PointGeometry = null,
LineSmoothness = 0,
});
}
集合中的每个系列都预设了 SeriesCollection 颜色,但是可以修改这些默认颜色。
我在 WPF 中使用 LiveCharts 创建一个包含列的笛卡尔图表。这些值来自一个列表,该列表又填充了数据库中的值。
一切正常,除了我希望每一列都有不同的填充。什么颜色无关紧要,只是每个单独列的随机颜色。另外,我不想为每个值创建一个新系列,因为值太多了。
类似问题中的 Mappers 方法对我不起作用,因为该示例会根据值的高低改变颜色。我想为每个不同的轴标签使用不同的颜色。
这是我创建系列的代码部分:
cartesianChart.Series.Add(new ColumnSeries
{
Title = "Column Chart: ",
Fill = Brushes.CadetBlue,
Values = valuesList.AsChartValues(),
DataLabels = true,
LabelPoint = point => (point.Y).ToString(),
});
图表是这样的:
如有任何想法,我们将不胜感激。
试试数据点 class:
DataPoint p=new DataPoint(chart1.Series["Celler"]);
p.SetValueY(cellVoltage[cell]);
p.Label=cellname[cell];//string
p.Color=Color.FromArgb(255 - cell * 20, 255, 80cell*20);
chart1.Series["Celler"].Points.Add(p);
如果您在 LiveCharts 中使用 SeriesCollection,它会自动为集合中的每个系列分配不同的颜色。
对于这个例子,我从我的一个项目中提取了一个片段,它添加了多个系列,并有一个包含所有系列名称的单独列表。这将循环并将每个系列添加到集合中,并从列表中添加系列数据和系列名称。
实时图表齿轮示例:
SeriesCollection = new LiveCharts.SeriesCollection();
List<GearedValues<long>> seriesList = new List<GearedValues<long>>();
seriesList.Add(Data1.AsGearedValues().WithQuality(Quality.Low));
seriesList.Add(Data2.AsGearedValues().WithQuality(Quality.Low));
for(int i = 0; i < seriesName.Count(); ++i)
{
SeriesCollection.Add(new GColumnSeries
{
Values = seriesList[i],
Name = seriesName[i],
Fill = System.Windows.Media.Brushes.Transparent,
StrokeThickness = 1,
PointGeometry = null,
LineSmoothness = 0,
});
}
标准实时图表示例
SeriesCollection = new LiveCharts.SeriesCollection();
List<ChartValues<long>> seriesList = new List<ChartValues<long>>();
seriesList.Add(Data1);
seriesList.Add(Data2);
for(int i = 0; i < seriesName.Count(); ++i)
{
SeriesCollection.Add(new ColumnSeries
{
Values = seriesList[i],
Name = seriesName[i],
Fill = System.Windows.Media.Brushes.Transparent,
StrokeThickness = 1,
PointGeometry = null,
LineSmoothness = 0,
});
}
集合中的每个系列都预设了 SeriesCollection 颜色,但是可以修改这些默认颜色。