c# - 动态数据显示图表 : change Y axis range

标签 c# wpf charts dynamic-data-display

有谁知道是否有任何方法可以从 D3 更改折线图上的 Y 轴限制?

我正在使用来自 Codeplex 源的最新版本...WPF 版本,而不是 Silverlight 版本。

我正在绘制 Android 传感器的读数,范围值变化很大。有时它在零附近,图形如下所示:

Ranging from -0.05 to +0.05

然后值的大小发生变化,Y 轴重新缩放以显示整个数据,图表现在如下所示:

Ranging from -0.8 to + 0.6

看看Y值从图1到图2有多大变化。

我想要的是用我选择的固定值制作 Y 轴,比如说 -10 到 +10。然后图表将始终以相同的比例绘制。

有什么办法吗?

图表的 XAML 代码是这样的:

    <d3:ChartPlotter
        Name="gyroGraph"
        Margin="21,5,10,0"
        Grid.ColumnSpan="2"
        Background="White"
        Grid.Row="1"
        LegendVisibility="Collapsed"
        NewLegendVisible="False"
        MainHorizontalAxisVisibility="Collapsed"
        MainVerticalAxisVisibility="Collapsed">
        <d3:VerticalAxis
            FontSize="8" />
        <d3:Header
            Content="Angular Velocity"
            FontSize="11" />
    </d3:ChartPlotter>

谢谢和最好的问候, 罗德里戈·巴斯尼亚克

最佳答案

希望还不算太晚,但我遇到了同样的问题并在d3 的论坛中找到了解决方案:http://dynamicdatadisplay.codeplex.com/discussions/281164

代码由 d3 用户“fromDKwithlove”创建。

这是您应该如何应用限制:

ViewportAxesRangeRestriction restr = new ViewportAxesRangeRestriction();
restr.YRange = new DisplayRange(-5, 105);
plotter.Viewport.Restrictions.Add(restr);

这是代码背后的类:

public class DisplayRange
{
    public double Start { get; set; }
    public double End { get; set; }

    public DisplayRange(double start, double end)
    {
        Start = start;
        End = end;
    }
}

public class ViewportAxesRangeRestriction : IViewportRestriction
{
    public DisplayRange XRange = null;
    public DisplayRange YRange = null;

    public Rect Apply(Rect oldVisible, Rect newVisible, Viewport2D viewport)
    {
        if (XRange != null)
        {
            newVisible.X = XRange.Start;
            newVisible.Width = XRange.End - XRange.Start;
        }

        if (YRange != null)
        {
            newVisible.Y = YRange.Start;
            newVisible.Height = YRange.End - YRange.Start;
        }

        return newVisible;
    }

    public event EventHandler Changed;
}

关于c# - 动态数据显示图表 : change Y axis range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600072/

相关文章:

c# - Resharper 提议从 WPF 中的 Window 类中删除冗余继承

wpf - 我可以在运行时将 XML/XAML 转换为 WPF 控件吗?

javascript - 将图例添加到圆环图 - jqPlot

c# - 在没有 Redis 的 Azure 上运行的 ASP.NET Core 应用程序中缓存数据

c# - 数据库更新的词典/列表速度

c# - 如何确定可为空的值类型

javascript - chart.js 在折线图上切换 x/y 轴

c# - 后台工作人员在午夜时分检查?

wpf - TextBlock 样式触发器

reactjs - 在 React 中使用动态输入绘制函数