2016-05-16 48 views
2

我正在使用動態數據顯示(v0.4)圖,我想在系列的特定數據點添加圓形標記以突出顯示圖的最大值的位置。如何在動態數據顯示圖的特定點添加標記?

考慮到動態數據顯示器的開發人員提供的文檔和示例的數量非常少,是否有人知道如何在特定點添加標記?

UPDATE

由於V0.4沒有d3:CircleMarkerGraph,我想用這個版本,而不是V0.3(恢復還需要調整代碼),我已經試過如下:

查看:

<d3:ChartPlotter x:Name="spectrumPlot" /> 
    <d3:LineGraph x:Name="spectrumLineGraph" DataSource="{Binding SpectrumPlotData}"/> 
    <d3:MarkerPointsGraph x:Name="spectrumMarkers" DataSource="{Binding SpectrumMarkersData}" /> 
</d3:ChartPlotter> 

視圖模型:

private IPointDataSource _spectrumMarkersData; 
    public IPointDataSource SpectrumMarkersData 
    { 
     get { return _spectrumMarkersData; } 
     set 
     { 
      _spectrumMarkersData = value; 
      OnPropertyChanged("SpectrumMarkersData"); 
     } 
    } 

private void UpdatePlotData() 
    { 
     EnumerableDataSource<double> xDataSource, yDataSource; 
     xDataSource = new EnumerableDataSource<double>(SignalProcessor.Instance.GetXAxisSpectrum()); xDataSource.SetXMapping(X => X); 
     yDataSource = new EnumerableDataSource<double>(SignalProcessor.Instance.GetYAxisSpectrum()); yDataSource.SetYMapping(Y => Y); 
     SpectrumPlotData = new CompositeDataSource(xDataSource, yDataSource); 
     SpectrumMarkersData = new CompositeDataSource(xDataSource, yDataSource); 
    } 

我希望譜圖中每個點都有一個標記,但沒有出現。 有誰知道我做錯了什麼?

回答

2

在Silverlight版本的online tutorial的繪圖多圖部分中,他們使用第二個繪圖標記特定項目。也就是說,標記疊加在圖上作爲第二個圖。

WPF版本可以從CodePlex(最新下載版本爲v0.3)以源代碼形式下載,不會公開與Silverlight版本相同的對象或名稱空間。

假設一個簡單的數據點列表,其中X座標是數組中項目的索引。這些標記使用Point對象將X索引映射到點Y值。這樣就不需要爲數據集中的每個項目都設置一個標記。你需要自己實現GetDataPoints()GetMarkPoints(),或者使用你已有的任何集合。

C#代碼隱藏例如:

public partial class GraphView : UserControl 
{ 
    public GraphView() 
    { 
     InitializeComponent(); 

     // Get the data and mark points. 
     double dataPoints[] = GetDataPoints(); 
     Point markPoints[] = GetMarkPoints(); 

     // Plot the data. 
     line.Plot(dataPoints); 

     // Plot the markers. 
     markers.Plot(markPoints); 
    } 
} 

而且(Silverlight的)XAML:

<UserControl x:Class="GraphView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d3="clr-namespace:Microsoft.Research.DynamicDataDisplay;assembly=DynamicDataDisplay.Silverlight" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

    <Grid x:Name="LayoutRoot" Background="White"> 
     <d3:Chart> 
      <Grid> 
       <!-- Plot line graph --> 
       <d3:LineGraph Name="line" 
           Description="Actual data" 
           Stroke="Green"/>     
       <!-- Plot additional points over line graph --> 
       <d3:CircleMarkerGraph Name="markers" 
             Description="Interesting points" 
             Size="5" Color="Black"/> 
      </Grid> 
     </d3:Chart> 
    </Grid> 
</UserControl> 
+1

感謝您對這個解決方案。但是在恢復到v0.3之前,我想進一步嘗試v0.4。請檢查我更新的問題。 –

相關問題