我使用OxyPlot
中的AreaSeries
来绘制垂直AreaSeries
。
我应用了一个从不同颜色的AreaSeries
列表构建的方法。
private static void AddTriggerAreaSeries(PlotModel plotModel, int initialPoint, int endingPoint, int index)
{
var seriesArea = new AreaSeries();
seriesArea.Title = "Instruction";
seriesArea.Color = OxyColors.Transparent;
seriesArea.Fill = TriggerColorList[index];
//Draws vertically from bottom to top (0 -> 20)
//j referes to the second axis, the y axis in this case (vertical axis)
//The initial and ending points represent interval limits in which the area series is drawn
for (var j = 0; j < 20; j++)
{
seriesArea.Points.Add(new DataPoint(initalPoint, j));
}
for (var j = 0; j < 20; j++)
{
seriesArea.Points.Add(new DataPoint(endingPoint, j));
}
plotModel.Series.Add(seriesArea);
}
参见下图
这段代码适用于vertical series
。但是,当我试图水平绘制同样的东西时,它不会从我给予的区间开始绘制。
下面是我用来绘制AreaSeries horizontally
的代码示例:
// Basically same code that I used but calling seriesArea.Points.Add(new DataPoint(x, y)) reversed, such that the line goes in the x direction
for (var j = 0; j < 20; j++)
{
seriesArea.Points.Add(new DataPoint(j, initalPoint));
}
for (var j = 0; j < 20; j++)
{
seriesArea.Points.Add(new DataPoint(j, endingPoint));
}
plotModel.Series.Add(seriesArea);
下面是这段代码的结果图在这个例子中initialPoint=1
和endingPoint=2
.我试着画interval [1,2]
,而不是只画从interval [0,1]
和结束点只画一条线:
2条答案
按热度按时间8nuwlpux1#
我更改了打印的方向,使
AreaSeries
垂直。以下是它最终的样子:下面是代码:(我使用MVVM模式,我在一个类中创建一个PlotModel,然后对其应用方法)
然而,这个颜色条的理想位置应该是垂直的,因为我正在特灵实现这样的东西:(此处为图片)
aurhwmvo2#
根据AreaSeries documentation:
AreaSeries显示两组点之间或一组点与基线之间的区域。
我不得不承认,这并不是很重要,但它确实表明有两组点。
Points
属性是一组,Points2
是另一组。您应该同时使用它们(除非您打算使用基线)。此外,除非您希望区域不是矩形,否则我相信您只需要为每组设置两个点,如下所示(注意:我没有测试它,但它与我测试过的代码类似):此外,如果AreaSeries仍然不适用,可以尝试RectangleAnnotation或PolygonAnnotation
注意:在撰写本文时,除了
RectangleAnnotaion
或PolygonAnnotation
存在这一事实之外,还没有任何关于它们的文档。