2015-05-31 4 views
0

я имею эту проблему ... метка точки делать это:MSChart линия диаграммы этикетки перекрывающихся

enter image description here

схема должна появиться симпатичной возможно, ось X серии будет расти всегда, но я Я боюсь, что если он получит больше очков, он будет выглядеть уродливее.

диаграмма имеет 11 точек на изображении, я попытался масштабировать ось X до 5, но ничего.

Любые советы?

+0

Можете ли вы поместить код, который заполняет серию – CheGueVerra

ответ

0

Попробуйте добавить смарт-этикетки в вашей серии, это позволит установить некоторые правила, так что отображение точечных меток без наложения

chart1.Series["Default"].SmartLabelStyle.Enabled = true; 
chart1.Series["Default"].SmartLabelStyle.AllowOutsidePlotArea = LabelOutsidePlotAreaStyle.Partial; 
chart1.Series["Default"].SmartLabelStyle.CalloutLineAnchorCap = LineAnchorCapStyle.Diamond; 
chart1.Series["Default"].SmartLabelStyle.CalloutLineColor = Color.Red; 
chart1.Series["Default"].SmartLabelStyle.CalloutLineWidth = 2; 
chart1.Series["Default"].SmartLabelStyle.CalloutStyle = LabelCalloutStyle.Box; 

Если это не дает желаемого эффекта, то ваш следующий вариант будет использовать пользовательские метки

//IMPORTANT: For this event to work the event handler must be added to the InitializeComponent() 
// method. We recommend that you add the event using the Properties window in the IDE 
private void Chart1_Customize(System.Web.UI.DataVisualization.Charting.Chart sender) 
{ 
    // Get X and Y axis labels collections 
    CustomLabelsCollection xAxisLabels = Chart1.ChartAreas["ChartArea1"].AxisX.CustomLabels; 
    CustomLabelsCollection yAxisLabels = Chart1.ChartAreas["ChartArea1"].AxisY.CustomLabels; 

    // Change text of the first Y axis label 
    yAxisLabels[0].Text = "Zero"; 

    // Change Y axis labels 
    for(int labelIndex = 1; labelIndex < yAxisLabels.Count; labelIndex++) 
    { 
     yAxisLabels[labelIndex].Text = yAxisLabels[labelIndex].Text + "�. 00'"; 
    } 

    // Remove each second X axis label 
    for(int labelIndex = 0; labelIndex < xAxisLabels.Count; labelIndex++) 
    { 
     // Adjust position of the previous label 
     if(labelIndex > 0) 
     { 
      xAxisLabels[labelIndex - 1].ToPosition += 
       (xAxisLabels[labelIndex].ToPosition - xAxisLabels[labelIndex].FromPosition)/2.0; 
      xAxisLabels[labelIndex - 1].FromPosition -= 
       (xAxisLabels[labelIndex].ToPosition - xAxisLabels[labelIndex].FromPosition)/2.0; 
     } 

     // Remove label 
     xAxisLabels.RemoveAt(labelIndex); 
    } 
} 

для получения дополнительной помощи с MS Chart, я настоятельно рекомендую вам загрузить проект рабочего образца here, он содержит пример кода о том, как использовать различные части MS Chart, код здесь из этого образца проекта.

Смежные вопросы