2013-12-20 58 views
0

我有一個名爲'Brutto'和許多類別的'系列'(jfree paralance)條形圖;自2008年以來,每個月都會有一個。我已經旋轉了月份標籤UP-90,但它們全都擠在一起,很難閱讀,所以我想跳過其中的一些(例如,每隔一個或每三個一個,但它不只要它是整潔可讀的,並且對未來的添加而言最好是動態的,那就沒什麼關係了)。跳過JFree條形圖中的類別軸標籤

我使用的JFreeChart 1.0.16,我想我已經發現了答案,當我遇到雷盧卡斯來到補丁在SourceForge和對jfree論壇相關帖子:http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=15345&start=15

不幸的是這個補丁/類沒有按」 t似乎與1.0.16一起工作;我已經嘗試了演示代碼以及爲我的用例調整演示,並且它不會拋出任何錯誤,但它對我的圖表也完全沒有影響。從SourceForge它看起來像修補程序是在2012年上次更新。

是否有某種方法可以跳過1.0.16或1.0.17中的類別標籤?如果沒有,是否有解決辦法或更新Ray的補丁以使用1.0.16?

我已經支付了JFree開發指南和演示源,但沒有看到任何有用的東西 - 讓我知道如果我錯過了那裏的東西。

更新

對於代碼跟你玩可以用雷的演示代碼與數據集更類似於礦:

public class CategoryLabelDemo extends ApplicationFrame { 

/** 
* Creates a new demo instance. 
* 
* @param title the frame title. 
*/ 
public CategoryLabelDemo(String title) { 
    super(title); 
    DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
    dataset.addValue(-0.0023, value, Jun 2008); 
dataset.addValue(-0.0039089907, value, Jul 2008); 
dataset.addValue(-0.0035218354, value, Aug 2008); 
dataset.addValue(-0.0092901141, value, Sep 2008); 
dataset.addValue(-0.0245642646, value, Okt 2008); 
dataset.addValue(-0.0032392894, value, Nov 2008); 
dataset.addValue(0.0024111542, value, Dez 2008); 
dataset.addValue(0.0062748379, value, Jan 2009); 
dataset.addValue(0.0107046352, value, Feb 2009); 
dataset.addValue(-0.0101799486, value, Mrz 2009); 
dataset.addValue(6.233119E-4, value, Apr 2009); 
dataset.addValue(0.0117317276, value, Mai 2009); 
dataset.addValue(0.0069779374, value, Jun 2009); 
dataset.addValue(0.0132477326, value, Jul 2009); 
dataset.addValue(0.0062355426, value, Aug 2009); 
dataset.addValue(0.0181909045, value, Sep 2009); 
dataset.addValue(0.0049082164, value, Okt 2009); 
dataset.addValue(0.0186578099, value, Nov 2009); 
dataset.addValue(0.0059455313, value, Dez 2009); 
dataset.addValue(8.5796E-4, value, Jan 2010); 
dataset.addValue(0.0048576055, value, Feb 2010); 
dataset.addValue(0.0230331754, value, Mrz 2010); 
dataset.addValue(0.0128787177, value, Apr 2010); 
dataset.addValue(-0.0101536773, value, Mai 2010); 
dataset.addValue(0.0017558451, value, Jun 2010); 
dataset.addValue(-0.0010147601, value, Jul 2010); 
dataset.addValue(0.0093268076, value, Aug 2010); 
dataset.addValue(0.0082342177, value, Sep 2010); 
dataset.addValue(0.0078039927, value, Okt 2010); 
dataset.addValue(7.203314E-4, value, Nov 2010); 
dataset.addValue(0.0071081519, value, Dez 2010); 
dataset.addValue(-0.0108996694, value, Jan 2011); 
dataset.addValue(0.0059615211, value, Feb 2011); 
dataset.addValue(-0.0045793302, value, Mrz 2011); 
dataset.addValue(0.0128991521, value, Apr 2011); 
dataset.addValue(0.0040074806, value, Mai 2011); 
dataset.addValue(-0.0117083555, value, Jun 2011); 
dataset.addValue(0.0096033028, value, Jul 2011); 
dataset.addValue(-0.0115565828, value, Aug 2011); 
dataset.addValue(-0.0178972929, value, Sep 2011); 
dataset.addValue(0.0091575092, value, Okt 2011); 
dataset.addValue(-0.0153357532, value, Nov 2011); 
dataset.addValue(0.0110588886, value, Dez 2011); 
dataset.addValue(0.0148573512, value, Jan 2012); 
dataset.addValue(0.0104185378, value, Feb 2012); 
dataset.addValue(-0.0038222222, value, Mrz 2012); 
dataset.addValue(0.0026768984, value, Apr 2012); 
dataset.addValue(-0.006763371, value, Mai 2012); 
dataset.addValue(8.063794E-4, value, Jun 2012); 
dataset.addValue(0.0189794091, value, Jul 2012); 
dataset.addValue(7.028642E-4, value, Aug 2012); 
dataset.addValue(0.0049165935, value, Sep 2012); 
dataset.addValue(-0.0038441377, value, Okt 2012); 
dataset.addValue(0.0055253464, value, Nov 2012); 
dataset.addValue(-0.0018316616, value, Dez 2012); 
dataset.addValue(0.0015728766, value, Jan 2013); 
dataset.addValue(0.0035770372, value, Feb 2013); 
dataset.addValue(0.0103451274, value, Mrz 2013); 
dataset.addValue(-7.743934E-4, value, Apr 2013); 
dataset.addValue(0.0051666236, value, Mai 2013); 
dataset.addValue(-0.0231303007, value, Jun 2013); 
dataset.addValue(0.0109620275, value, Jul 2013); 
dataset.addValue(-0.0020818876, value, Aug 2013); 
dataset.addValue(0.0067802503, value, Sep 2013); 
dataset.addValue(0.0087204283, value, Okt 2013); 
dataset.addValue(0.0053924506, value, Nov 2013); 
dataset.addValue(-0.0103865146, value, Dez 2013); 
    JFreeChart chart = createChart(dataset); 
    ChartPanel chartPanel = new ChartPanel(chart); 
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); 

    setContentPane(chartPanel); 

} 

/** 
* Creates a chart. 
* 
* @param dataset the dataset. 
* 
* @return A chart. 
*/ 
private static JFreeChart createChart(CategoryDataset dataset) { 

    JFreeChart chart = null; 
    try { 
     BarRenderer barRenderer = new BarRenderer(); 
     CategoryAxis customCategoryAxis = new CategoryAxisSkipLabels(); // new CategoryAxis("Category"); 
     ((CategoryAxisSkipLabels)customCategoryAxis).setTickMarksVisible(true); 
     ((CategoryAxisSkipLabels)customCategoryAxis).setDisplaySkippedTickMarks(true); 
     // ****************** set Layout Type and AlgorithmType 
     ((CategoryAxisSkipLabels)customCategoryAxis).setAlgorithmType(CategoryAxisSkipLabels.N_STEP_ALGO); 
     // this must be the last call to category axis as it may return CategoryAxis instead of CategoryAxisSkipLabels   
     //customCategoryAxis = ((CategoryAxisSkipLabels)customCategoryAxis).setTruncate(true); 

      customCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); 
     NumberAxis numberAxis = new NumberAxis("Value"); 
     CategoryPlot categoryPlot = new CategoryPlot(
      dataset, customCategoryAxis, numberAxis, barRenderer 
     ); 
     chart = new JFreeChart("Bar Chart", categoryPlot); 
    } catch (Exception e) { 
     System.out.print("crash"); 
    } 
    // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART... 

    // set the background color for the chart... 
    chart.setBackgroundPaint(Color.white); 

    // get a reference to the plot for further customisation... 
    CategoryPlot plot = (CategoryPlot) chart.getPlot(); 
    plot.setBackgroundPaint(Color.lightGray); 
    plot.setRangeGridlinePaint(Color.white); 
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); 
    // change the auto tick unit selection to integer units only... 
    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); 
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 
    LegendTitle legend = (LegendTitle) chart.getLegend(); 
    legend.setPosition(RectangleEdge.BOTTOM); 
    legend.setHorizontalAlignment(HorizontalAlignment.LEFT); 
    legend.setBorder(new BlockBorder(Color.white)); 
    legend.setBackgroundPaint(Color.white); 

    BarRenderer renderer = (BarRenderer) plot.getRenderer(); 
    renderer.setDrawBarOutline(false); 
    renderer.setLegendItemToolTipGenerator(new StandardCategorySeriesLabelGenerator("Tooltip: {0}")); 
    // OPTIONAL CUSTOMISATION COMPLETED. 

    return chart; 

} 


/** 
* Starting point for the demonstration application. 
* 
* @param args ignored. 
*/ 
public static void main(String[] args) { 

    CategoryLabelDemo demo = new CategoryLabelDemo("Bar Chart Demo 2"); 
    demo.pack(); 
    RefineryUtilities.centerFrameOnScreen(demo); 
    demo.setVisible(true); 

} 
public static void run(String title) throws Exception { 
    CategoryLabelDemo demo = new CategoryLabelDemo(title); 
    demo.pack(); 
    RefineryUtilities.centerFrameOnScreen(demo); 
    demo.setVisible(true);  
} 

} 
+0

請將您的代碼發佈爲演示您的問題的[SSCCE](http://www.sscce.org)。這允許用戶複製/粘貼並重現您的問題。 –

+0

我不確定這是相關的,因爲我也使用補丁作者提供的演示代碼,但沒有結果,但我會看看我是否可以給你一些有用的東西 – eljaydub

+0

也許你可以將代碼合併到你的問題中?也許只是一個簡單的版本來演示你的問題? –

回答

0

這裏我給你一個代碼嘗試了一次,可能是這將工作,並會給你你想要的。

實施例:

final JFreeChart chart = ChartFactory.createStackedBarChart("", "", "", 
       dataset, PlotOrientation.VERTICAL, true, true, false); 

CategoryPlot plot = chart.getCategoryPlot(); 
plot.getDomainAxis(1).setVisible(false); 

嘗試,將刪除類別軸標籤。

+0

這在StackedBarchart中很不錯,如果你有其他圖表格式,請告訴我。 – Krishna

+0

我想要做的是刪除_some_標籤中沒有_all_的標籤。不過謝謝。 – eljaydub

+0

但沒有具體說明。你可以刪除特定的軸標籤,但你可以刪除特定軸的標籤。 – Krishna