2012-09-29 60 views
0

我的問題是非常相似,在此SO鏈接聚類酒吧條形圖與同一類別

Create barchart using jfreechart with bars of same category together

如果我運行下面的示例中,我得到的圖表作爲圖像問的問題, (圖像附)

DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
dataset.setValue(2, "Lesson-1", "27-sep-2012"); 
dataset.setValue(7, "Lesson-2", "27-sep-2012"); 
dataset.setValue(4, "Lesson-3", "27-sep-2012"); 

JFreeChart chart = ChartFactory.createBarChart(
    "BarChart using JFreeChart", "Student sample", "Marks sample", dataset, 
    PlotOrientation.VERTICAL, true, true, false); 
chart.setBackgroundPaint(Color.yellow); 
chart.getTitle().setPaint(Color.blue); 
CategoryPlot plot = chart.getCategoryPlot(); 

BarRenderer br = (BarRenderer) plot.getRenderer(); 
br.setItemMargin(0.7); 
try { 
    ChartUtilities.saveChartAsJPEG(new File(
     "D:/jfreeimages/sample.jpeg"), chart, 500, 300); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Image which I got after running the code mentioned here

針對日期27-SEP-2012,我需要所有的酒吧要羣集和爲DISP沒有任何差距。他們中許多人建議我有較小余地barRenderer(下面的代碼)

BarRenderer br =(BarRenderer) plot.getRenderer() ; 
br.setItemMargin(0.0); 

但是這使得酒吧非常大的規模,我想在酒吧的大小,因爲只有附形象。請幫忙。

+0

您可能希望與setItemMargin(0.0)結合使用br.setMaximumBarWidth(雙寬)嘗試。有關詳細信息,請參閱:http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/renderer/category/BarRenderer.html#setMaximumBarWidth(double) – jcern

+0

我也嘗試過,但仍然無法'達到我想要的! – Arun

回答

1

除了渲染器中的setItemMargin(0)之外,您可以調整軸邊距和麪板大小以獲得所需的效果。

image

import java.awt.Color; 
import java.awt.Dimension; 
import javax.swing.JFrame; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.CategoryAxis; 
import org.jfree.chart.plot.CategoryPlot; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.renderer.category.BarRenderer; 
import org.jfree.data.category.DefaultCategoryDataset; 

/** 
* @see http://stackoverflow.com/a/12659576/230513 
*/ 
public class StudentSample { 

    public static void main(String[] args) { 
     DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
     dataset.setValue(2, "Lesson-1", "27-sep-2012"); 
     dataset.setValue(7, "Lesson-2", "27-sep-2012"); 
     dataset.setValue(4, "Lesson-3", "27-sep-2012"); 

     JFreeChart chart = ChartFactory.createBarChart(
      "BarChart using JFreeChart", "Student sample", "Marks sample", 
      dataset, PlotOrientation.VERTICAL, true, true, false); 
     chart.setBackgroundPaint(Color.yellow); 
     chart.getTitle().setPaint(Color.blue); 
     CategoryPlot plot = chart.getCategoryPlot(); 
     BarRenderer br = (BarRenderer) plot.getRenderer(); 
     br.setItemMargin(0); 
     CategoryAxis domain = plot.getDomainAxis(); 
     domain.setLowerMargin(0.25); 
     domain.setUpperMargin(0.25); 

     JFrame f = new JFrame("TreeEditorDemo"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     ChartPanel cp = new ChartPanel(chart){ 

      @Override 
      public Dimension getPreferredSize() { 
       return new Dimension(300, 300); 
      } 
     }; 
     f.add(cp); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 

     //try { 
     // ChartUtilities.saveChartAsJPEG(
     //  new File("temp.jpg"), chart, 300, 300); 
     //} catch (IOException e) { 
     // e.printStackTrace(); 
     //} 
    } 
} 
+0

謝謝..但我需要將圖表保存爲特定文件夾中的jpeg。這是要求。我在你的回覆中添加了categoryAxis代碼片段。仍然我得到不聚集的酒吧:-(我在這裏丟失的東西?? – Arun

+0

如果我將itemMargin設置爲0,那麼酒吧會變得很大,如果只有一個數據,所以我不得不使用barRenderer.setMaximumBarWidth(.06 );問題是,如果我設置maximumBarWidth的值,那麼聚集不會發生:-( – Arun

+0

我懷疑你還沒有改變'saveChartAsJPEG()'中相應的'width'和'height'參數。仍然有問題,請更新您的[sscce](http://sscce.org/)以顯示您當前的方法和價值觀。 – trashgod

相關問題