DynamicDataDisplay错误AddLineGraph不在Chartplotter

时间:2016-03-09 22:52:26

标签: c# wpf dynamic-data-display

我一直在使用http://d3future.codeplex.com/

中提供的D3版本

它一直与股票图表配合良好,但在AddLineGraph中出错。 以下代码来自其他网站帖子。

似乎某些版本的DynamicDataDisplay.dll可用(v2 / v3 / v4)使用该语句工作/编译。

非常感谢任何帮助。

public partial class MainWindow : Window
{
    public ObservableDataSource<Point> source1 = null;
    public MainWindow()
    {
        InitializeComponent();
        //this.Loaded += MainWindow_Loaded;
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        source1 = new ObservableDataSource<Point>();
        //Set identity mapping of point
        source1.SetXYMapping(p => p);

        plotter3.AddLineGraph(source1, 4, "Data Row");

        //Fits the chart within ViewPort
        plotter3.Viewport.FitToView();

        // Start computation in 2nd thread
        Thread simThread = new Thread(new ThreadStart(Computation));
        simThread.IsBackground = true;
        simThread.Start();
    }
}

4 个答案:

答案 0 :(得分:0)

尝试AddLineChart。我不知道为什么会改变:

var x = Enumerable.Range(0, 9).Select(i => i * 100.0);
var y = new double[] { 10, 9, 7, 8, 5, 6, 4, 3, 2, 1 };
var source = DataSource.Create(x,y);
var line = plotter.AddLineChart(source)
    .WithStroke(Brushes.Red)
    .WithStrokeThickness(2)
    .WithDescription("x vs y");

答案 1 :(得分:0)

这可能对你有帮助, 请注意,PointCollection中元素的类型,Collectionenumerable数据点的集合。

var ds = new EnumerableDataSource<Point>(Collection);
LineGraph line;
ds.SetXMapping(x => x.X);
ds.SetYMapping(y => y.Y);
line = new LineGraph(ds);
line.LinePen = new System.Windows.Media.Pen(System.Windows.Media.Brushes.Red, 2);
//line.Description = new PenDescription("description");
Graph.Children.Add(line);
Graph.FitToView();

答案 2 :(得分:0)

感谢大家提供的有用回复。

经过多次修补(是的我是初学者)后,我发现向项目中添加5个cs文件并使用D3Future源站点上提供的DynamicDataDisplay.dll(56kb)启用了最初发布的代码。 五个文件是:: [1] Plotter2D [2] Plotter2DExtensions [3] Description [4] StandardDescription [5] PenDescription

我现在不需要传说和描述,所以我注释掉了对它的引用,只是为了让代码能够使用AddLineGraph方法进行编译和运行。

我使用的是Windows 10 / Visual Studio Community Edition 2015。

谢谢。

答案 3 :(得分:0)

我同意,为什么要更改此内容并特别注意不要更新所有源代码或文档。

另一方面,正在采用标准化:

<Window

...

xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"

...

>

<d3:ChartPlotter Name="plotter" Margin="0,5,0,0">
<d3:LineGraph Name="lineGraph" Stroke="Red" StrokeThickness="1"/>
</d3:ChartPlotter>

</Window>

在守则背后:

public MainWindow()
{

InitializeComponent();

plotter.Viewport.Domain = new Rect(-1, -1.2, 20, 2.4);
plotter.Children.Add(new HorizontalScrollBar());
plotter.AxisGrid.DrawHorizontalMinorTicks = false;
plotter.AxisGrid.DrawVerticalMinorTicks = false;

}




private void Window_Loaded(object sender, RoutedEventArgs e)
{

lineGraph.DataSource = CreateSineDataSource(1.0);

}   




private IPointDataSource CreateSineDataSource(double phase)
{

const int N = 100;

Point[] pts = new Point[N];

for (int i = 0; i < N; i++)
{
double x = i / (N / 10.0) + phase;
pts[i] = new Point(x, Math.Sin(x - phase));
}

var ds = new EnumerableDataSource<Point>(pts);
ds.SetXYMapping(pt => pt);

return ds;

}

这是文档中显示此标准化的片段,但整理并最小化以显示构建块线图。在此处找到:http://d3future.codeplex.com/SourceControl/latest#Main/src/DevSamples/LineTestSample/Window1.xaml.cs版本:0.4

请注意使用 DataSource

希望这有帮助!