1

我正在使用这个很棒的库https://d3future.codeplex.com/来绘制一些 2D 图形。

在旧的 D3 中,我曾经这样设置图例:

graf = plotter.AddLineGraph(new CompositeDataSource(xSrc, plot),
                     new Pen(brush, 4),
                     new PenDescription("myText" ));

但我不知道如何在未来 D3中获得相同的结果。有人可以让我看到光明吗?

探索源代码我发现了这一点,但无法理解如何访问和更改默认字符串“LineGraph”:

    public class LineGraph : PointsGraphBase
        {
            static LineGraph()
            {
                Type thisType = typeof(LineGraph);

                Legend.DescriptionProperty.OverrideMetadata(thisType, new FrameworkPropertyMetadata("LineGraph"));
                Legend.LegendItemsBuilderProperty.OverrideMetadata(thisType, new FrameworkPropertyMetadata(new LegendItemsBuilder(DefaultLegendItemsBuilder)));
            }
//more stuff

}
4

3 回答 3

3

v0.4.0使用以下语法:

// For access to the Legend class
using Microsoft.Research.DynamicDataDisplay.Charts;

... snip ...
LineGraph lineGraph = new LineGraph(dataSource);
lineGraph.LinePen = new Pen(Brushed.Green, 1.0);
Legend.SetDescription(lineGraph, "The line label");
plotter.Children.Add(lineGraph);
... snip ...

v0.3.0使用以下语法:

plotter.AddLineGraph(dataSource, pen, marker, new PenDescription("The line label"));
于 2016-04-04T22:17:54.047 回答
0

当您将折线图添加到绘图仪 ( AddLineGraph(...)) 时,其中一个参数是描述字符串。

于 2013-12-03T11:37:00.277 回答
0

WGW 是现货!我竖起大拇指。

我发现以稍微不同的方式做这件事更容易理解:

<Page 

...

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

... >

... 

<Grid Name="GridOne" Grid.Column="0" Grid.Row="0" Margin="13" />

</Page>

以及背后的代码:

using Microsoft.Research.DynamicDataDisplay.Charts;

...

ChartPlotter PlotterOne = new ChartPlotter();

// Add a Graph to One:
GridOne.Children.Add(PlotterOne);

LineGraph line = new LineGraph();
line.ProvideVisiblePoints = true;
line.Stroke = Brushes.Blue;
line.StrokeThickness = 1;
line.DataSource = GetDayDataSource();

Legend.SetDescription(line, "Today's Activity");

PlotterOne.Children.Add(line);

希望这可以帮助。

于 2016-12-08T09:49:32.180 回答