Поместите StripeLine поверх серии (отрегулируйте Z-Index / Z-Order) - PullRequest
1 голос
/ 14 марта 2012

Я строю столбчатую диаграмму с System.Web.UI.DataVisualization.Charting и хотел бы показать пунктирную линию для представления среднего значения. StripeLine , кажется, именно то, что я ищу, за исключением того, что он находится под / позади столбцов (см. Пример).

Есть ли способ настроить "Z-индекс"StripeLine, чтобы он отображался перед / поверх Series?

. Я не вижу свойства для этого и меняю порядок, добавляя Series и StripeLine.не имеет значения.

Sample Chart

Ответы [ 2 ]

7 голосов
/ 15 марта 2012

Вы можете использовать аннотации

double avg = Chart1.Series[0].Points.Average(p => p.XValue);
double lineHeight = avg;
HorizontalLineAnnotation ann = new HorizontalLineAnnotation();
ann.AxisX = Chart1.ChartAreas[0].AxisX;
ann.AxisY = Chart1.ChartAreas[0].AxisY;
ann.IsSizeAlwaysRelative = false;
ann.AnchorY = lineHeight;
ann.IsInfinitive = true;
ann.ClipToChartArea = Chart1.ChartAreas[0].Name; ann.LineColor = Color.Red; ann.LineWidth = 3;
Chart1.Annotations.Add(ann);

HTML-код

<asp:Chart runat="server" ID="Chart1"   ImageStorageMode="UseImageLocation"  Width="800px" Height="400px" OnClick="Chart1_Click">
    <ChartAreas  >
    <asp:ChartArea></asp:ChartArea>
    </ChartAreas>
    <series>  
           <asp:Series Name="Students" BorderColor="180, 26, 59, 105">  
            <Points>
                <asp:DataPoint AxisLabel="jon" XValue="5" YValues="4" />
                <asp:DataPoint AxisLabel="kon" XValue="15" YValues="44" />
                <asp:DataPoint AxisLabel="pol" XValue="85" YValues="90" />
            </Points>
           </asp:Series>                        
      </series> 
</asp:Chart>

Код для текстовой аннотации

TextAnnotation txtAnn = new TextAnnotation();
txtAnn.AxisX = Chart1.ChartAreas[0].AxisX;
txtAnn.AxisY = Chart1.ChartAreas[0].AxisY;
txtAnn.IsSizeAlwaysRelative = false;
txtAnn.AnchorY = lineHeight;
txtAnn.AnchorX = Chart1.Series[0].Points.Last().XValue;
txtAnn.AnchorAlignment = ContentAlignment.BottomLeft;
txtAnn.Text = "DivisionOne(35.5)";
txtAnn.ClipToChartArea = Chart1.ChartAreas[0].Name; txtAnn.ForeColor =  Color.Red; 
Chart1.Annotations.Add(txtAnn);

Вы можете получить больше информации здесь

Дополнительная информация об аннотациях

Изображение диаграммы

0 голосов
/ 02 октября 2014

Вы можете просто использовать свойство текста полосой

Chart1.ChartAreas ("ChartArea1"). AxisY.StripLines (0) .Text = "Line Название "

...