2012-05-25 53 views
4

我有一個XYChart繪製數據爲Y軸上的線性步驟,我想繪製爲對數或半對數Y刻度,如何更改我的下面的代碼?JavaFX XYChart對數圖

public class BaseXYChart extends Application { 

@Override 
public void start(Stage stage) { 
    stage.setTitle("Linear plot"); 

    final CategoryAxis xAxis = new CategoryAxis(); 
    final NumberAxis yAxis = new NumberAxis(1, 22, 0.5); 

    yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis){ 
     @Override 
    public String toString(Number object){ 
     return String.format("%7.2f", object); 
    } 
}); 
final LineChart<String, Number>lineChart = new LineChart<String, Number>(xAxis, yAxis); 

    lineChart.setCreateSymbols(false); 
    lineChart.setAlternativeRowFillVisible(false); 

    XYChart.Series series1 = new XYChart.Series(); 

    series1.getData().add(new XYChart.Data("Jan", 1)); 
    series1.getData().add(new XYChart.Data("Feb", 1.5)); 
    series1.getData().add(new XYChart.Data("Mar", 2)); 
    series1.getData().add(new XYChart.Data("Apr", 2.5)); 
    series1.getData().add(new XYChart.Data("May", 3)); 
    series1.getData().add(new XYChart.Data("Jun", 4)); 
    series1.getData().add(new XYChart.Data("Jul", 6)); 
    series1.getData().add(new XYChart.Data("Aug", 9)); 
    series1.getData().add(new XYChart.Data("Sep", 12)); 
    series1.getData().add(new XYChart.Data("Oct", 15)); 
    series1.getData().add(new XYChart.Data("Nov", 20)); 
    series1.getData().add(new XYChart.Data("Dec", 22)); 

    BorderPane pane = new BorderPane(); 
    pane.setCenter(lineChart);   
    Scene scene = new Scene(pane, 800, 600); 
    lineChart.getData().addAll(series1); 

    stage.setScene(scene); 

    stage.show(); 
} 

public static void main(String[] args) { 
    launch(args); 
} 

} 

感謝所有

回答