2009-12-29 33 views
17

Có cách nào để điều chỉnh chiều rộng của các thanh trong Barchart không?Chiều rộng của thanh trong Jfreechart

Tôi tạo biểu đồ của mình bằng mã sau.

final JFreeChart chart = ChartFactory.createBarChart("Report", // chart title 
       "Date", // domain axis label 
       "Number", // range axis label 
       dataset, // data 
       PlotOrientation.VERTICAL, // orientation 
       true, // include legend 
       true, // tooltips? 
       false // URLs? 
       ); 

Trả lời

5

Theo Dave Gilbert (JFreeChart Project Leader)

Chiều rộng thanh sẽ được tự động tính toán và sẽ phụ thuộc vào biểu đồ hoặc chiều rộng cốt truyện và số lượng mục trong bộ dữ liệu của bạn.

Xem cuộc thảo luận here.

8

Bạn không thể xác định trực tiếp chiều rộng của các thanh, nhưng có một vài thuộc tính có thể thay đổi ảnh hưởng đến chiều rộng. Bạn nên có một cái nhìn tại lowerMargin, upperMargincategoryMargin thuộc tính được định nghĩa bởi CategoryAxis hoặc itemMargin thuộc tính trong BarRenderer.

Ví dụ:

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); 
    renderer.setItemMargin(.1); 

Các đôi quy định tại setItemMargin(double percent) là tỷ lệ phần trăm của tổng chiều dài của trục loại đó sẽ được sử dụng cho khoảng cách giữa các thanh trong phạm vi cùng loại (mặc định là 0,2 hoặc 20%). Giá trị này càng nhỏ thì thanh càng lớn.

16

Bạn cũng có thể đặt chiều rộng tối đa của một thanh. Điều này rất hữu ích nếu bạn có một biểu đồ rộng nhưng đôi khi chỉ có một hoặc hai điểm dữ liệu và bạn không muốn một thanh chất béo lớn duy nhất chiếm toàn bộ khu vực.

CategoryPlot categoryPlot = chart.getCategoryPlot(); 
BarRenderer br = (BarRenderer) categoryPlot.getRenderer(); 
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart 
+0

Cảm ơn! đã làm việc một điều trị. – Buffalo

5

Sau khi nhận được không có kết quả sử dụng lợi nhuận tích cực và zero, tôi đã cố gắng sử dụng số âm cho itemMargin để xem những gì sẽ xảy ra. Các thanh bắt đầu trở nên dày hơn. Tôi không biết nếu điều này được khuyến khích, mặc dù, vì bạn sẽ nhận được chồng lên nhau nếu không có đủ không gian có sẵn.

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer(); 
renderer.setItemMargin(-2); 
+0

Rực rỡ. Tôi đang gặp vấn đề tương tự một lần nữa và tôi không thể đạt được bất cứ điều gì với setMaximumBarWidth, điều này đã làm các trick. Cảm ơn. – Buffalo

+0

cùng là trường hợp ở đây !! Cảm ơn rất nhiều .. Nó đã làm các trick .. –

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