1. 程式人生 > >使用OxyPlot在WPF中建立圖表

使用OxyPlot在WPF中建立圖表

對於我們的專案之一,我們必須從外部源檢索資料,並將它們儲存在資料庫中。一個來自客戶機的請求,是看在圖形中檢索到的資料。此外,他希望看到一個實時更新該圖中檢索資料的每一秒。 
經過一番搜尋,我發現OxyPlot庫。這個庫可以在WPF,Silverlight中,Windows窗體,甚至在Windows Store應用程式中使用。在現在正在研究一個alpha版本為單聲道。 
雖然包已經下載超過10萬次不會有這麼多的部落格文章查詢有關實施庫。雖然包已經下載超過10萬次不會有這麼多的部落格文章查詢有關實施庫。

Using Nuget

包括OxyPlot在你的應用程式的最簡單方法是使用NuGet包管理器在Visual Studio。 執行 Visual Studio,並開始建立一個新的WPF專案。選擇一個名稱和位置,並點選“OK”。

image

建立專案後,開啟管理器控制檯,在提示符下鍵入以下命令並打(每一個命令之後),請輸入: 
安裝封裝Oxyplot.Core 
安裝封裝Oxyplot.Wpf

image

當然你也可以使用軟體包管理器使用者介面右擊引用,然後選擇管理NuGet軟體包和他們的方式。

Create the ViewModel

我們將使用MVVM模式(部分)呈現在螢幕上的圖表。第一步是建立檢視模型為我們MainWindow.xaml。用滑鼠右鍵單擊該專案,並新增一個資料夾的ViewModels。用滑鼠右鍵單擊該資料夾並新增一個類MainWindowModel.cs。

image

要使用MVVM模式,我們需要使公共類和繼承INotifyPropertyChanged介面。 
繼承介面後,我們必須實現PropertyChangedEventHandler事件,如下圖所示。

1234567891011121314151617
using System.ComponentModel;using OxyPlotDemo.Annotations;namespace OxyPlotDemo.ViewModels{    public class MainWindowModel:  INotifyPropertyChanged    {        public event PropertyChangedEventHandler PropertyChanged;        [NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } }}

現在,我們可以補充一點,我們會繫結到XAML頁面的一些公共屬性。首先建立一個PlotModel那是OxyPlot庫的一部分。在建構函式中,我們將啟動PlotModel引數。設定器將呼叫,將通知該檢視中有物體上的變化,可能有要呈現的OnPropertyChanged方法。

123456789101112131415161718192021222324252627282930
using System.ComponentModel;using OxyPlot;using OxyPlotDemo.Annotations;namespace OxyPlotDemo.ViewModels{    public class MainWindowModel:  INotifyPropertyChanged    {        private PlotModel plotModel;        public PlotModel PlotModel        {            get { return plotModel; }            set { plotModel = value; OnPropertyChanged("PlotModel"); }        }        public MainWindowModel()        {            PlotModel = new PlotModel();        }        public event PropertyChangedEventHandler PropertyChanged;        [NotifyPropertyChangedInvocator]        protected virtual void OnPropertyChanged(string propertyName)        {            PropertyChangedEventHandler handler = PropertyChanged;            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));        }    }}

Adding the graph to the page

現在,我們可以將圖形新增到MainWindow.xaml頁面。之前,我們可以新增圖形,我們將需要新增的名稱空間OxyPlot庫(4號線)。我們將在PlotModel引數繫結到我們在檢視模型建立的PlotModel。

12345678910
<Window x:Class="OxyPlotDemo.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:oxy="http://oxyplot.codeplex.com"        Title="MainWindow" Height="350" Width="525">    <Grid>        <oxy:Plot x:Name="Plot1" Title="A Graph" Model="{Binding PlotModel}" Margin="10" Grid.Row="1">        </oxy:Plot>    </Grid></Window>

Binding the model to the view

最後一部分,我們的設定是檢視模型繫結到檢視。因為我們不使用任何的MVVM框架,我們將不得不手動繫結模型在MainWindow.xaml頁面背後的程式碼。 


加入我們的檢視模型的私有財產,並啟動該屬性在建構函式中。點的DataContext這個屬性,我們就大功告成了。
123456789101112131415161718192021
using System.Windows;namespace OxyPlotDemo{    /// <summary>    /// Interaction logic for MainWindow.xaml    /// </summary>    public partial class MainWindow : Window    {        private ViewModels.MainWindowModel viewModel;        public MainWindow()        {            viewModel = new ViewModels.MainWindowModel();            DataContext = viewModel            InitializeComponent();        }    }}

如果我們按F5鍵執行該應用程式,我們會看到一個空視窗開啟。我們有一些資料的過程中新增到PlotModel圖將呈現前。

Set up the Graph – PlotModel

回到我們的檢視模型來建立我們的檢視模型。第一次啟動將增加軸的圖,從而OxyPlot知道在哪裡可以繪製點。 
在我們的檢視模型類中建立一個新的方法SetUpModel。在這裡我們將定義圖表的圖例(位置,邊界,陛下,...),並新增2軸。則DateTimeAxis我們的X軸(我們要在一條線上的時間繪製點)和ValuaAxis我們的Y軸。

相關推薦

使用OxyPlot在WPF建立圖表

對於我們的專案之一,我們必須從外部源檢索資料,並將它們儲存在資料庫中。一個來自客戶機的請求,是看在圖形中檢索到的資料。此外,他希望看到一個實時更新該圖中檢索資料的每一秒。  經過一番搜尋,我發現OxyPlot庫。這個庫可以在WPF,Silverlight中,Window

如何在VMware系統的ubuntu16.04建立與win7系統的共享文件夾

alt hgfs vmware 結果 vmw 設置 too 得到 image 點擊虛擬機設置一次得到如圖所示 系統默認放在了 /mnt/hgfs文件夾 點擊虛擬機安裝vmware tools 解壓vmware tools壓縮包 運行sudo ./vmwar

如何使用VSTO自動將Excel圖表復制到Word

rto log ocx ins started 沒有 sub mes 如何 如何使用VSTO自動將Excel中的圖表復制到Word 原文地址:https://code.msdn.microsoft.com/How-to-copy-Chart-in-Excel-a29f902

VS2017建立ASP.NET MVC 4.0項目

mvc4 .html his pathinfo gpo sem device sta 模板 新的項目需要運行在WIN2003上,又不想用ASPX了,只好用回ASP.NET MVC4.0了,可是在VS2017中已經沒有MVC4的模板了,網上下載的安裝了也沒有,只好把以前的MV

RedHat 6.5建立RAID5(軟件磁盤陣列 )

RedHat 6.5;建立RAID raid5 RAID磁盤陣列的英文名稱是Redundant Array of Independent Disks (RAID),即獨立冗余磁盤陣列。RAID可以通過一些技術(軟件或硬件)將多個硬盤整合成為一個較大的磁盤設備;而這個較大的磁盤可不止存儲功能而已,它還具

Unity建立文本保存數據

HA 文本文 obj onu pla pat ble input getc public void CreateYunYD() { GameToolsManager.Instance.effectType = EFFECTTYPE.YunYD;

Redhat6建立raid5卷

Linux磁盤陣列raid51、首先做raid5卷需要添加四塊硬盤,其中一塊作為備用盤,虛擬機中添加硬盤步驟如下這裏需要說明四塊磁盤大小需一樣同樣的操作添加另外三塊硬盤,添加完成如下圖2、開啟Redhat Linux,用fdisk -l 檢查可以看到添加上來的四塊硬盤接上圖3、用fdisk命令對四塊硬盤進行分

RedHat 6.5建立Raid5卷(軟件磁盤陣列) ;並且對Raid5卷做磁盤配額

數據備份 不能 設置 blog 安裝 創建raid 接下來 簡單 需要 實驗項目: 1 了解並且配置磁盤陣列(raid 0、raid1 、raid5 、raid6 、raid1+0) 2 了解並且配置磁盤配額 (為了解決安全性,對磁盤進行限制) 磁盤陣列理論部

關於怎麽在VS2017建立一個C/C++函數庫

and 函數 動態鏈接 mic view microsoft 自己 uil lin 想起來自己在大一暑假時做過飛機大戰的小遊戲,於是選擇在VS中創建一個自己的動態鏈接庫(C++),也是為了將加強自己對於數據結構的鞏固。 因為自己也是第一次接觸,於是百度來

在windows建立ftp伺服器

大概流程敘述: 1.控制面板-程式-找到開啟或關閉windows功能,找到如下: 2.開啟管理,找到Internet資訊服務管理,建立ftp站點,如下: 3.建立完成後,在本地使用者和組裡面建立新的使用者,預設在user組下面,刪掉如下: 4.找到建立的ftp伺

在ArcGIS建立Python工具(三)

從 ArcGIS 10.1 版本開始,我們可以建立 python工具箱 來自定義指令碼工具,這種工具箱相比較上一篇提到的標準工具箱。有著獨特的優勢,具體二者的區別總結過,看這一篇。 認識 Python工具箱 Python 工具箱 (.pyt) 是一個簡單的文字檔案,可以在任

在ArcGIS建立Python工具(二)

上一篇中我們瞭解到有兩種方式在 ArcGIS 中建立 Python工具,這一篇就來看看如何在標準工具箱中建立指令碼工具。 ArcGIS Help 中指令碼工具的幫助過於枯燥,在這裡,我以一個具體的例項來總結構建指令碼工具的過程,我要實現的需求是做個快速實現羽化邊界效果的小工具,

在ArcGIS建立Python工具(一)

ArcGIS Desktop 自帶有大量的工具,可以執行各種各樣的地理處理任務。通過 python 我們可以靈活地呼叫這些工具,把工具組織成自己的工作流,甚至建立一些新的工具。今天就說說在 ArcGIS 中建立 Python工具這個話題。 在 ArcGIS 中我們可以通過兩種方式來建立py

qt 建立一個工作執行緒(例子)

當一個事件需要很長的處理時間,就建立一個工作執行緒,防止主介面卡死。 1.新建一個QT的gui專案,裡面包含main.cpp,mainwindow.h,mainwindow.cpp,mainwindow.ui檔案 2.新建一個頭檔案thread.h,派生一個執行緒類,重新寫一個執行緒的入口函式。

SpringCloud分散式事務實戰(七)在微服務1建立整合函式,呼叫微服務2

(1) 新增jar pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-s

pandas建立多級索引的方法

(1)方法一:使用pandas.MultiIndex.from_arrays() In [25]: pd.MultiIndex.from_arrays([['a', 'a', 'b', 'b'],[1, 2, 1, 2]]) Out[25]: MultiIndex(levels=[['a',

關於在eclipse建立的Mevan專案無法使用ESTL標籤

解決:是web.xml的版本問題,需要將頭資訊改為低版本 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="htt

windows下虛擬環境建立Django專案(建立虛擬環境,安裝virtualenv,安裝Django,建立專案)

一、建立虛擬環境   pip install virtualenv1 要使用Django,首先要建立一個虛擬工作環境。我們先為專案建立一個資料夾learn,在資料夾中開啟命令列(shift+右擊),來建立另一個虛擬環境。   如果使用的是python 3,可使

Django的model建立

類中的class Meta欄位的作用:     第一個作用可以給這個類起名字 在後臺的admin中顯示這個類名字 class CourseCategory(models.Model): """課程大類, e.g 前端 後端...""" name = mo

Java建立物件的記憶體圖

  所有人都知道面向物件思想,Java中的物件的建立在記憶體中是如何建立的,傳智播客的視訊看了一遍,把一些講解的比較清晰的內容記錄下來,方便記憶的更加深刻,Java中建立物件的過程,首先要理解JVM中棧、堆、方法區的空間,以及在這三個空間內,虛擬機器都進行什麼操作,這樣就會理解起來容易一些,其實Ja