I have XYChart graph data as linear steps along the Y axis, I would like to build as a logarithmic or semi-logarithmic scale of Y, how to change my next code?
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); } }
Thank you all
source share