c# - LiveCharts ColumnSeries 在运行时更新颜色
问题描述
我在 WPF 上使用 LiveCharts 0.9.7 和 1.2.9 Geared 版本来显示 ColumnSeries 上的人口数据。
这是我的场景:一开始,我用蓝色填充列。我想在运行时更改单个列值的颜色。
我试图达到一个值,SeriesCollection[0].Values[0]
但是没有填充或颜色选项,它只是Double
.
我也尝试投射SeriesCollection[0] to ColumnSeries
,但我无法达到结果。是否可以在运行时更新单个值的颜色?
public SeriesCollection SeriesCollection { get; set; } = new SeriesCollection
{
new ColumnSeries
{
Title = "Population of Bodrum",
Values = new ChartValues<double> { 1500, 2500, 3700, 2000, 1000},
Fill = Brushes.Blue
}
};
解决方案
CartesianMapper
您可以通过将 a 分配给来指定配置ColumnSeries.Configuration
。
以下示例将给定图表的第三列的颜色从蓝色更改为红色:
public class ChartDataModel
{
public ChartDataModel()
{
this.BlueSeries = new ColumnSeries()
{
Title = "Population of Bodrum",
Values = new ChartValues<double> { 1500, 2500, 3700, 2000, 1000 },
Fill = Brushes.Blue
};
this.SeriesCollection = new SeriesCollection() { this.BlueSeries };
}
private void ChangeThirdChartPointColorToRed()
{
CartesianMapper<double> mapper = Mappers.Xy<double>()
.X((value, index) => index)
.Y(value => value)
.Fill((value, index) => index == 2 ? Brushes.Red : Brushes.Blue);
// Dynamically set the third chart point color to red
this.BlueSeries.Configuration = mapper;
}
// The actual chart data source
public SeriesCollection SeriesCollection { get; set; }
private ColumnSeries BlueSeries { get; set; }
}
您还可以通过指定相应的谓词,使用CartesianMapper
来根据其y值更改点的颜色。要绘制所有超过 2,000 红色值的值,您可以使用以下映射器:
CartesianMapper<double> mapper = Mappers.Xy<double>()
.X((value, index) => index)
.Y(value => value)
.Fill((value, index) => value > 2000 ? Brushes.Red : Brushes.Blue);
推荐阅读
- django - 带有内联/嵌套数据的 Django 表单
- python - 将加密和解密从 Node.js 移动到 python
- dart - 如何获取“材料下拉选择”以显示当前模型值
- mysql - 如何在外部为 MySQL 创建密码哈希?
- javascript - React: Uncaught TypeError: this.state.data.map is not a function and
- javascript - jQuery.html() 插入输入字段在 IE11 中不起作用
- c++ - 不同类型的copy_if
- loops - 动态宏变量访问 SAS
- spring - Spring对控制器的依赖注入不在构造函数中
- php - 使用 XAMPP 访问 .accdb