2013-06-12 37 views
8

Tôi hiện đang sử dụng NVD3 để tạo một vài biểu đồ đường kẻ. Tôi tự hỏi nếu nó có thể làm cho các trục y trục luôn bắt đầu từ 0. Hiện tại nó luôn luôn bắt đầu từ giá trị y thấp nhất. Tôi đã thử sử dụng tickValues ​​nhưng tôi không muốn thay đổi các giá trị khác. Tôi cũng đã cố gắng để thêm một điểm dữ liệu với giá trị 0, nhưng điều này có vẻ như một cách giải quyết và nó ảnh hưởng đến cách đồ thị trông. Ý tưởng nào?NVD3/D3 thay đổi trục y giá trị tối thiểu

Trả lời

9

Bạn không cần phải thêm điểm dữ liệu "giả", tất cả những gì bạn cần là điều chỉnh miền nhập của tỷ lệ, ví dụ: một cái gì đó như

chart.yAxis.scale().domain([0, maxValue]); 
+0

Được rồi, tôi sẽ cố gắng, cảm ơn! – Siva

+0

Có cách nào để có được 'maxValue' của biểu đồ mà cốt truyện hiển thị không? Tôi đang sử dụng hộp nvd3 và không hiển thị các ngoại lệ. Vì vậy, tôi muốn sử dụng giá trị tối đa đó được tính bằng biểu đồ dưới dạng giới hạn trên. – Dinesh

+0

Bạn có thể nhận được giá trị tối đa từ dữ liệu của mình. –

28

Hầu hết các biểu đồ có hàm forceX và forceY lấy một mảng giá trị. Bạn có thể sử dụng nó như thế này:

var chart = nv.models.lineChart(); 
    chart.forceX([0, 10]) 
    chart.forceY([-1, 1]) 

Điều này sẽ đảm bảo rằng trên xAxis bạn luôn hiển thị ít nhất 0 và 10, nhưng sẽ không hạn chế miền nếu bạn thao tác trực tiếp. Đó là nếu bạn làm điều gì đó như:

chart.yAxis.scale().domain([0, maxValue]); 

và dữ liệu của bạn có giá trị âm X sẽ không hiển thị trên biểu đồ vì chúng nằm ngoài miền được chỉ định nhưng chúng sẽ sử dụng forceX.

+0

Tôi đang cố gắng đặt tỷ lệ nhưng không hoạt động-- ví dụ: chart.y1Axis.scale() .tên ([0, maxValue]) .tickFormat (d3.format (', f')); – Acyra

+1

Khi bạn gọi cập nhật(), nó có thể là các giá trị bạn đã đặt trực tiếp. – WolfgangCodes

+25

Bổ sung nhỏ vào câu trả lời: Tôi muốn đặt giá trị tối thiểu trên yAxis, giá trị tối đa phải được đặt tự động. Tôi phát hiện ra rằng nếu bạn gọi forceY chỉ với một giá trị duy nhất thay vì mảng cho cài đặt [min, max], nvd3 đặt giá trị này là tối thiểu và tính toán giá trị tối đa của chính nó. TL; DR -> Sử dụng forceY (0) để đặt giá trị yAxis tối thiểu thành 0 và để phép tính tối đa theo nvd3 :) – Fidel90

1

Tôi tìm thấy trang thử nghiệm này là rất hữu ích khi tìm ra tài sản trên bảng xếp hạng nvd3 (áp dụng ngay cả khi bạn không sử dụng góc btw)

https://krispo.github.io/angular-nvd3/#/lineChart

  • Nhấp vào 'mở rộng'
  • Nhấp vào biểu tượng + bên cạnh forceY
  • Nhập giá trị như -5 và sau đó thêm nó ngay lập tức thấy hiệu ứng (biểu đồ mẫu đã không hiển thị).
+1

Thật tuyệt khi lưu ý rằng điều này không hoạt động đối với nhiều biểu đồ. Bị đập đầu vào tường cố gắng tìm ra lý do tại sao điều này không hiệu quả cho biểu đồ của tôi trước khi tôi nhận ra điều đó –

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