2012-01-09 16 views
19

Mam wykres .NET, który zapełniam w czasie wykonywaniaJak wymusić na wykresie automatyczną korektę osi Y?

Wykres pojawia się w raporcie. Dla każdego zespołu w moim raporcie, wyczyścić całą serię i dodać je z powrotem za pomocą kodu

  Series s = new Series(); 
      s.Font = new Font("Verdana", 8f);     

      int i = 0; 
      foreach (var month in line.Months) 
      { 
       DataPoint p = new DataPoint(); 

       p.XValue = i; 
       p.YValues = new Double[] { month.LineValue ?? 0 }; 
       s.Points.Add(p); 

       i++; 
      } 

Kiedy wypełnić wykresu po raz drugi, maksymalne pobyty Y osi na 2000, czyli nie są przeliczone

Jak wymusić ponowne obliczanie?

mam ScaleBreakStyle włączona Y Axis

Jeśli próbuję ustawić IsLogarithmic true na osi Y dostaję X zamiast wykresu

używam programu Visual Studio 2010 z systemem. Windows.forms.DataVisualization.Charting.Chart

Paul

+0

wygląda odpowiedź Antona Kiedrow powinny być akceptowane rozwiązanie – Molomby

Odpowiedz

34

chart.ChartAreas[0].RecalculateAxesScale();

+3

Próbowałem także ustawić "AxisY.Maximum = Double.NaN" (i to samo dla AxisY2), ale to nie działa dla mnie. –

+0

Ta odpowiedź zadziałała. Włączałem/wyłączałem różne serie (wszystkie serie są początkowo wyłączone i kontrolowane z listy) i zauważyłem, że tylko pierwsza włączona seria ustawi maksimum dla osi Y. – Doc

10

The docs powiedzieć domyślną właściwości Axis.Maximum jest NaN (nie jest liczbą), więc powinieneś być w stanie ponownie włącz funkcję automatycznego skalowania, przywracając ją do tej wartości .

Coś takiego ...

chart.ChartAreas[0].AxisY.Maximum = Double.NaN; 

UPDATE/KOREKTA

odpowiedź Antona jest prawidłowa; należy używać:

ChartArea.RecalculateAxesScale(); 

Według the RecalculateAxesScale() docs:

... czasem jest to konieczne, aby przeliczyć właściwości obszar wykresu tak, że wykres jest renderowane poprawnie. Na przykład, jeśli zakres osi zostanie zmieniony, etykiety dla tej osi muszą zostać ponownie obliczone.

Wygląda na to, że jest dostępny od .NET 4.0.

+2

myślałem i próbowałem to samo, ale to nie działa. Odpowiedź Anton Kedrov działa – yclkvnc

+0

@yclkvnc, czy możesz zamieścić informacje o wersji? Myślę, że to rozwiązanie kiedyś działało, ale wygląda na to, że większość ludzi ma teraz dużo szczęścia w odpowiedziach Antoniego. – Molomby

+0

Przepraszam, nie pamiętam nawet używania wykresu .NET 5 lat temu :) – yclkvnc

2

trzeba uruchomić tę sekwencję:

AxisY.Maximum = Double.NaN; // sets the Maximum to NaN 
AxisY.Minimum = Double.NaN; // sets the Minimum to NaN 
enter code herechart.ChartAreas[0].RecalculateAxesScale(); // recalculates the Maximum and Minimum values, since they are set to NaN 
+1

Proszę sformatować kod i wyjaśnić, co zrobiłeś – Prateek

Powiązane problemy