当前位置: 首页 > news >正文

WPF使用LiveCharts画图时,横坐标转换成时间

一、背景

    使用LiveCharts画图时,横坐标通常为数值类型,要转换成时间等自定义类型,需要用到Formatter进行类型转换。

    示例使用MVVM模式编写

二、View代码

     关键是设置LabelFormatter属性

<lvc:CartesianChart Series="{Binding Series}"><lvc:CartesianChart.AxisX><lvc:Axis LabelFormatter="{Binding Formatter}"></lvc:Axis></lvc:CartesianChart.AxisX>
</lvc:CartesianChart>

 三、Model代码

 public class DataPoint{public DateTime Date { get; set; }public double Value { get; set; }}

四、ViewModel代码

    4.1 设置数据映射

       用Mappers将DateTime转换数值类型,这里使用了DateTime的Ticks进行转换

var dayConfig = Mappers.Xy<DataPoint>().X(dayModel => (double)dayModel.Date.Ticks / TimeSpan.FromHours(1).Ticks).Y(dayModel => dayModel.Value);

4.2 设置数据映射转换格式

    将转换后的数值类型还原成Datetime,再加上自定义的字符

Formatter = value => new DateTime((long)(value * TimeSpan.FromHours(1).Ticks)).ToString("t");

4.3 后端代码

public ScatterChartViewModel(){// 初始化数据var dataPoints = new List<DataPoint>{new DataPoint { Date = new DateTime(2024, 3, 1), Value = 10 },new DataPoint { Date = new DateTime(2024, 3, 2), Value = 20 },new DataPoint { Date = new DateTime(2024, 3, 3), Value = 15 },// 添加更多数据点};var dayConfig = Mappers.Xy<DataPoint>().X(dayModel => (double)dayModel.Date.Ticks / TimeSpan.FromHours(1).Ticks).Y(dayModel => dayModel.Value);Series = new SeriesCollection(dayConfig){new ScatterSeries{Title = "Data Points",Values = new ChartValues<DataPoint>(dataPoints)}};Formatter = value => new DateTime((long)(value * TimeSpan.FromHours(1).Ticks)).ToString("t");}

http://www.lryc.cn/news/318685.html

相关文章:

  • Qt客户端开发的技术难点
  • 杰理AD155儿童玩具语音集成电路
  • git bash 命令行反应慢、卡顿(定位出根本原因)
  • Android 启动service(Kotlin)
  • Windows蓝牙驱动开发之模拟HID设备(一)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)
  • LlamaParse: 高效的PDF文件RAG解析工具
  • platform设备注册驱动模块的测试
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItemGroup)
  • Docker:常用命令
  • 如何搭建“Docker Registry私有仓库,在CentOS7”?
  • DBA面试题:MySQL缓存池LRU算法做了哪些改进?
  • idea+vim+pycharm的块选择快捷键
  • ansible 部署FATE集群单边场景
  • 融入Facebook的世界:探索数字化社交的魅力
  • stm32-定时器输出比较PWM
  • Redis对过期key的删除策略
  • http的body格式
  • Java Web开发从0到1
  • 002——编译鸿蒙(Liteos -a)
  • Ansible--详解
  • Django和Mysql数据库
  • [蓝桥杯]-最大的通过数-CPP-二分查找、前缀和
  • 安卓UI面试题 26-30
  • CPU、GPU、IPU、NPU、TPU、LPU、MCU、MPU、SOC、DSP、FPGA、ASIC、GPP、ECU、
  • 鸿蒙车载原生开发,拓展新版图
  • 15届蓝桥杯第二期模拟赛题单详细解析
  • mysql统计数据库大小
  • centos防火墙firewall-cmd限定特定的ip访问
  • 创维汽车与创维光伏储能亮相2024上海AWE,感受制造业的升级变迁
  • Kafka配置SASL_PLAINTEXT权限。常用操作命令,创建用户,topic授权