2012-01-09 27 views
19

Tôi có biểu đồ .NET mà tôi đang điền vào lúc chạyLàm cách nào để buộc biểu đồ tự động điều chỉnh Y Axis tối đa?

Biểu đồ xuất hiện trong báo cáo. Đối với mỗi ban nhạc trong báo cáo của mình, tôi xóa tất cả các series và thêm chúng trở lại trong sử dụng mã

  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++; 
      } 

Khi tôi cư bảng xếp hạng lần thứ hai, tối đa ở lại Trục Y vào năm 2000, tức là không được tính lại

Làm cách nào để buộc tính toán lại?

Tôi có ScaleBreakStyle kích hoạt trên Trục Y

Nếu tôi cố gắng thiết lập IsLogarithmic true trên Y Axis tôi nhận được một X thay vì một biểu đồ

Tôi đang sử dụng Visual Studio 2010 với hệ thống. Windows.forms.DataVisualization.Charting.Chart

Paul

+0

Hình như câu trả lời Anton Kedrov của nên là giải pháp chấp nhận – Molomby

Trả lời

34

chart.ChartAreas[0].RecalculateAxesScale();

+3

Tôi cũng đã cố gắng đặt 'AxisY.Maximum = Double.NaN' (và tương tự cho AxisY2), nhưng nó không hoạt động đối với tôi. –

+0

Câu trả lời này phù hợp với tôi. Tôi đã kích hoạt/vô hiệu hóa Series khác nhau (tất cả các series ban đầu bị vô hiệu hóa và được điều khiển từ một danh sách) và nhận thấy rằng chỉ có Series đầu tiên được kích hoạt sẽ thiết lập tối đa cho trục y. – Doc

10

The docs nói mặc định cho các Axis.Maximum tài sản là NaN (không phải là một số), vì vậy bạn sẽ có thể kích hoạt lại chức năng mở rộng tự động bằng cách đặt lại giá trị đó .

Something như thế này ...

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

UPDATE/SỬA CHỮA

câu trả lời Anton là chính xác; bạn nên sử dụng:

ChartArea.RecalculateAxesScale(); 

Theo the RecalculateAxesScale() docs:

... đó là đôi khi cần thiết để tính toán lại tính diện tích biểu đồ để bảng xếp hạng là render chính xác. Ví dụ: nếu phạm vi trục được thay đổi, các nhãn cho trục đó phải được tính toán lại.

Rõ ràng, nó đã có sẵn từ .NET 4.0.

+2

tôi nghĩ và cố gắng điều tương tự nhưng nó đã không làm việc. Câu trả lời của Anton Kedrov hoạt động – yclkvnc

+0

@yclkvnc, bạn có thể đăng một số thông tin phiên bản không? Tôi nghĩ rằng giải pháp này một lần làm việc nhưng có vẻ như hầu hết mọi người đang có may mắn hơn với câu trả lời của Anton những ngày này. – Molomby

+0

xin lỗi, tôi thậm chí không nhớ sử dụng biểu đồ .NET 5 năm trước :) – yclkvnc

2

bạn cần phải chạy trình tự này:

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

Vui lòng định dạng mã và giải thích những gì bạn đã làm – Prateek

Các vấn đề liên quan