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

WPF中OxyPlot不同图表的使用

在 WPF 中使用 OxyPlot 实现不同图表,核心在于创建和配置PlotModel对象,并将其绑定到PlotView控件上进行显示。通过向PlotModel中添加不同类型的Series(数据系列),即可轻松实现折线图、柱状图、饼图、散点图等多种图表。

基础使用

在 XAML 文件的 Window 或 UserControl 元素中添加 OxyPlot 的命名空间引用:

xmlns:oxy="http://oxyplot.org/wpf"

添加图表控件

<oxy:PlotViewModel="{Binding PlotModel}"/>

ViewModel:

定义好PlotModel ,然后初始化不同的图表

publicclassMainViewModel{publicPlotModelPlotModel{get;}publicMainViewModel(){// 创建 PlotModel,设置标题varplotModel=newPlotModel{Title="简单折线图"};// 创建折线数据系列并添加数据点varlineSeries=newLineSeries{Title="数据曲线",Color=OxyColors.Red,MarkerSize=4,};lineSeries.Points.Add(newDataPoint(0,1));lineSeries.Points.Add(newDataPoint(1,5));lineSeries.Points.Add(newDataPoint(2,3));plotModel.Series.Add(lineSeries);this.PlotModel=plotModel;}}

以下是几种常见图表的实现方法:

📈 折线图 (Line Chart)

折线图通过LineSeries来实现。你只需创建LineSeries对象,向其中添加DataPoint数据点,然后将其加入PlotModelSeries集合中。

publicMainViewModel(){// 创建 PlotModel,设置标题varplotModel=newPlotModel{Title="简单折线图"};// 创建折线数据系列并添加数据点varlineSeries=newLineSeries{Title="数据曲线",Color=OxyColors.Red,MarkerSize=4,};lineSeries.Points.Add(newDataPoint(0,1));lineSeries.Points.Add(newDataPoint(1,5));lineSeries.Points.Add(newDataPoint(2,3));lineSeries.Points.Add(newDataPoint(3,7));lineSeries.Points.Add(newDataPoint(4,8));plotModel.Series.Add(lineSeries);this.PlotModel=plotModel;}

效果:

曲线图

在折线图上LineSeries增加InterpolationAlgorithm = InterpolationAlgorithms.CanonicalSpline就可以变成曲线图

// 创建 PlotModel,设置标题varplotModel=newPlotModel{Title="简单折线图"};// 创建折线数据系列并添加数据点varlineSeries=newLineSeries{Title="数据曲线",Color=OxyColors.Red,InterpolationAlgorithm=InterpolationAlgorithms.CanonicalSpline,MarkerSize=4,};lineSeries.Points.Add(newDataPoint(0,1));lineSeries.Points.Add(newDataPoint(1,5));lineSeries.Points.Add(newDataPoint(2,3));lineSeries.Points.Add(newDataPoint(3,7));lineSeries.Points.Add(newDataPoint(4,8));plotModel.Series.Add(lineSeries);

效果:

📊 水平柱状图 (Bar Chart)

柱状图通过ColumnSeries来实现。与折线图类似,你创建ColumnSeries并填充数据即可。

注:后面代码只写public MainViewModel()里面部分的,其他的都一样

varplotModel=newPlotModel{Title="柱状图示例"};varbarSeries=newBarSeries{Title="生产数量"};barSeries.Items.Add(newBarItem{Value=10});barSeries.Items.Add(newBarItem{Value=25});barSeries.Items.Add(newBarItem{Value=15});plotModel.Series.Add(barSeries);plotModel.Axes.Add(newCategoryAxis{Position=AxisPosition.Left,Key="X",ItemsSource=new[]{"2023-01-01","2023-01-02","2023-01-03"},});this.PlotModel=plotModel;

效果:

自定义颜色

barSeries.Items.Add(newBarItem{Value=10,Color=OxyColor.FromRgb(255,0,0)});barSeries.Items.Add(newBarItem{Value=25,Color=OxyColor.FromRgb(0,255,0)});barSeries.Items.Add(newBarItem{Value=15,Color=OxyColor.FromRgb(0,0,255)});

🥧 饼图 (Pie Chart)

饼图通过PieSeries来实现,非常适合展示各部分占整体的比例。

varplotModel=newPlotModel{Title="饼图示例"};varpieSeries=newPieSeries{Title="市场份额",AngleSpan=360,StartAngle=0};pieSeries.Slices.Add(newPieSlice("A公司",40){IsExploded=true});// IsExploded 可使扇区分离pieSeries.Slices.Add(newPieSlice("B公司",25));pieSeries.Slices.Add(newPieSlice("C公司",20));pieSeries.Slices.Add(newPieSlice("其他",15));plotModel.Series.Add(pieSeries);

效果:

源码:https://gitee.com/wqhdw/wpf-app-test-example

http://www.jsqmd.com/news/804571/

相关文章:

  • 小熊派gd32f303实战指南(9)— 硬件I2C驱动AT24C02 EEPROM从零到一
  • 抖音无水印下载神器:3分钟掌握批量下载与直播录制全攻略
  • 厚街台球厅哪家值得推荐:秒杀台球厅宝藏之地 - 13724980961
  • 终极指南:5分钟搭建SillyTavern AI聊天前端,解锁个性化角色对话体验
  • 无人机RGBT双模态小目标行人检测:数据集+YOLOv8融合方案
  • 构建AI助手持久记忆系统:Rekall项目实践与MCP协议应用
  • 66%开发者被AI坑过!我Debug AI代码的3个“血泪”教训
  • WarcraftHelper:3步解决魔兽争霸3卡顿与兼容性问题终极指南
  • 2026品牌排行榜优选|广州聚杰芯科交通流量调查系统,头部品牌值得选择 - 品牌速递
  • 毕业设计救星:手把手教你用原生组件拼出高颜值微信小程序商品详情页(从轮播图到销售数据)
  • 2026绵阳装修公司终极避坑指南:市场深度解析与3家口碑王者严选 - 优家闲谈
  • 别再只用高斯模糊了!聊聊手机修图App和PS背后,CNN图像去噪是怎么工作的
  • Oracle RAC 环境详解
  • 避开SPI的坑:STM32与ICM20948通信时CPOL/CPHA设置、片选时序与数据错位问题排查
  • 厚街游泳馆哪家值得推荐:秒杀游泳馆儿童友好 - 13425704091
  • Windows家庭版远程桌面终极解决方案:RDP Wrapper完整实战指南
  • 河南物业人注意:这7类物业软件,再便宜也不要选 - movno1
  • BruteClaw:智能凭证爆破工具的设计原理与实战应用
  • 2026年4月成都抽画灯箱行业深度调研:源头厂家选型逻辑与避坑指南
  • 2026交通量调查系统推荐排名,广州聚杰芯科,行业标杆实力领跑 - 品牌速递
  • 品质靠谱!广州聚杰芯科交通量调查系统,每一款都经过严苛检测 - 品牌速递
  • WindowResizer:Windows窗口强制调整的终极免费解决方案
  • 新手教程使用curl命令通过Taotoken直接调用聊天补全接口
  • 物业软件选型避坑:低价软件背后的5个隐藏风险,郑州物业必看 - movno1
  • newcoder 周赛143 C 费马小定理和质因数分解相关优化
  • 厚街健身房哪家值得推荐:秒杀健身房标杆 - 17329971652
  • 别再只读卡号了!用STM32+RC522深入玩转M1卡:读写数据块、值块操作实战
  • 厚街商务会所哪家值得推荐:秒杀商务会所 首选 - 17322238651
  • 从零构建GPTs应用商店:基于向量搜索的AI助手聚合平台实战
  • 西电b测场景下如何快速接入多模型api服务