赢表格图表

时间:2011-09-21 16:08:34

标签: c# winforms charts

我可能会问错误的问题,但我需要的是在我的Windows窗体图表中添加“引导线”。换句话说,我有一个简单的数据系列图表,我需要在通过分数的y轴上绘制一条线,或80%。我不想添加第二个系列,因为第一个系列具有未确定数量的数据点。有一种简单的方法可以简单地在y轴上画一条线吗? 下面的虚线是我拍摄的(它不需要箭头)。

100|
   |
 90|
   |                     o
 80|<----------------------->
   |
 70|      o                  o
   |
 60|         o
   |   o        o
 50|o              o
   |_________________________
    1  2  3  4  5  6  7  8  9

4 个答案:

答案 0 :(得分:8)

抱歉重复Don Kirkby的回答,但我还没有代表添加评论。

使用HorizontalLineAnnotation,您可以将ClipToChartArea设置为限制图表中线条的范围,以解决您提到的问题。

ChartArea area = ...;

var line = new HorizontalLineAnnotation();
line.IsInfinitive = true; // make the line infinite
line.ClipToChartArea = area.Name;
line.LineDashStyle = ChartDashStyle.Dash;

假设您的y轴以0..1的比例保持值,那么您可以使用line.AxisY = area.AxisY将线附加到Y轴,这会导致其位置被解释为轴值,然后设置line.Y = 0.8;附加在80%的位置。

答案 1 :(得分:4)

您可以添加StripLine

使用StripWidth属性设置行位置:

var series = chart1.Series[0]; //series object
var chartArea = chart1.ChartAreas[series.ChartArea];
chartArea.AxisY.StripLines.Add(new StripLine
                                           {
                                               BorderDashStyle = ChartDashStyle.Dash,
                                               BorderColor = Color.DarkBlue,
                                               StripWidth = 80//Here is your y value
                                           });

更新:此答案的上一版本使用Interval代替StripWidth。作为@dthor correctly pointed out in the comments设置Interval将绘制重复的带状线。在上面的示例中,默认情况下Interval设置为0。

答案 2 :(得分:2)

我从未使用过图表,但HorizontalLineAnnotation听起来很有希望。

答案 3 :(得分:0)

您可以使用一个循环向帧添加点,该循环具有例如900循环的1到9个值。对于每个循环,编译器将计算该值并为该周长留下一个点,为下一个循环留下另一个点,因此它看起来像一个等式的行:)