有谁知道是否有任何方法可以从 D3 更改折线图上的 Y 轴限制?
我正在使用来自 Codeplex 源的最新版本...WPF 版本,而不是 Silverlight 版本。
我正在绘制 Android 传感器的读数,范围值变化很大。有时它在零附近,图形如下所示:
然后值的大小发生变化,Y 轴重新缩放以显示整个数据,图表现在如下所示:
看看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/