使用动态数据显示(D3)生成具有多个Y轴的图形

时间:2014-06-16 21:32:55

标签: c# wpf xaml plot dynamic-data-display

在过去的一周里,我读了很多材料并尝试了很多东西,但我并没有随处可见。

我有一个主窗口MainWindowView,其中包含如下定义的复选框:

<CheckBox IsChecked="{Binding Path=ocv_checkbox, Mode=TwoWay}" Margin="0, 0, 0, 2" Content="OCV"/>
<CheckBox IsChecked="{Binding Path=battery_temperature_checkbox, Mode=TwoWay}" Margin="0, 0, 0, 2" Content="Battery Temperture"/>
<CheckBox IsChecked="{Binding Path=slope_checkbox, Mode=TwoWay}" Margin="0, 0, 0, 2" Content="Slope"/>

根据选中的框,我想在用户点击Button时在图表上绘制一条线。 我想要相同图表上的所有行。

问题在于,根据单击的框,我可能需要一个额外的轴来绘制。例如,如果我有3个复选框1 2和3.数字1和2的单位为英寸,复选框3的单位为加仑。如果检查了所有3个,我将需要左侧(或右侧)的英寸垂直轴和右侧的加仑轴(图3)。

如何使用D3以编程方式执行此操作?根本没有太多的文档,我需要在网上看到一个明确的答案。

目前我有:

<d3:ChartPlotter Name="plotter" Margin="10,10,20,10">
    <d3:ChartPlotter.HorizontalAxis>
        <d3:HorizontalIntegerAxis Name="dateAxis"/>
    </d3:ChartPlotter.HorizontalAxis>
    <d3:ChartPlotter.VerticalAxis>
        <d3:VerticalIntegerAxis Name="countAxis"/>
    </d3:ChartPlotter.VerticalAxis>

    <d3:Header FontFamily="Arial" Content="{Binding ElementName=ThisGraphWindowInstance, Path=title}"/>
    <d3:VerticalAxisTitle FontFamily="Arial" Content="{Binding ElementName=ThisGraphWindowInstance, Path=yAxis}"/>
    <d3:HorizontalAxisTitle FontFamily="Arial" Content="{Binding ElementName=ThisGraphWindowInstance, Path=xAxis}"/>
</d3:ChartPlotter>

在我的GraphWindowView.xaml中,显然只有2个轴。如果可能,我想使用后面的代码添加一个。

谢谢你, 富

1 个答案:

答案 0 :(得分:0)

如果要添加多个Y轴,请转到 InjectedPlotter 对象。 Foreach类型的数据(英寸,加仑......),您将需要一个InjectedPlotter作为子项添加到 chartplotter 。当禁用一种数据的所有行(未选中复选框)时,只需隐藏注入的绘图仪。您必须使用正确的轴(注入绘图仪)链接每条线。