2012-10-11 23 views
3


我需要以下類型的圖表:
這應該是一個「steped」與在垂直軸上分類線圖,像這樣:爪哇JFreeChart的分類步驟圖表水平(圖片explane)

this is how it shold be

我發現一個類別步驟圖的例子,但它的方向是不正確的,我的目的。

http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/renderer/category/CategoryStepRenderer.html


所有到目前爲止,我所做的就是這一點,但你可以看到紅線不適合於圖表的取向(應水平):

current state

相應的代碼這樣:

DefaultCategoryDataset ds = new DefaultCategoryDataset(); 

// create dataset 

    for (int k = 0; k < ffCount; k++) { 
        StateSignal ss1 = (StateSignal) this.ffDSet.getFframes().get(k).getSignals().get(i); 
        ds.setValue((double) k + 1, ss1.getName(), ss1.getStates().get(0).getStatus()); 

    } 
    CategoryStepRenderer categorysteprenderer = new CategoryStepRenderer(false); 
    categorysteprenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator()); 
    CategoryAxis categoryaxis = new CategoryAxis("Category"); 
    NumberAxis numberaxis = new NumberAxis("Value"); 
    CategoryPlot categoryplot = new CategoryPlot(ds, categoryaxis, numberaxis, categorysteprenderer); 
    categoryplot.setRangePannable(true); 
    categoryplot.setOrientation(PlotOrientation.HORIZONTAL); 
    chart = new JFreeChart("test", null, categoryplot, true); 

我沒有得到它的工作。有任何想法嗎?

在此先感謝!

+0

@Vertexwahn每個值的替代標籤,當清理代碼,請修復後的一切。 –

回答

7

看起來你需要使用一個標準XYLineChart與XYStepRendererSymbolAxis替換默認範圍軸,而不是一個CategoryStepRenderer和水平情節方向

如果關聯狀態A和B的數值說1和2,您可以創建這樣一個圖表:

enter image description here

使用這個XYStepRenderer

XYStepRenderer renderer = new XYStepRenderer(); 
    renderer.setBaseShapesVisible(true); 
    renderer.setSeriesStroke(0, new BasicStroke(2.0f)); 
    renderer.setSeriesStroke(1, new BasicStroke(2.0f)); 
    renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator()); 
    renderer.setDefaultEntityRadius(6); 
    plot.setRenderer(renderer); 

Symbol Axis

String[] grade = new String[3]; 
    grade[0] = ""; 
    grade[1] = "Status A"; 
    grade[2] = "Status B"; 
    SymbolAxis rangeAxis = new SymbolAxis("", grade); 
    rangeAxis.setTickUnit(new NumberTickUnit(1)); 
    rangeAxis.setRange(0,3); 
    plot.setRangeAxis(rangeAxis); 

在這個例子中SymbolAxis提供了軸心國

+0

「SymbolAxis」爲+1。 – trashgod

+0

謝謝!它很棒! –