powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX Charts unitTick
6 сообщений из 6, страница 1 из 1
JavaFX Charts unitTick
    #38487657
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кто-нибудь общался с chart`ами javafx, подскажите,

авторfinal NumberAxis yAxis = new NumberAxis();
yAxis.setTickUnit(1);

setTickUnit - это то, о чем я думаю? Это шаг ? Я ставлю в единицу, но на шкале по y все равно шаг 0.5, при этом если сделать что-нибудь вроде:

авторfinal NumberAxis yAxis = new NumberAxis(0, 50, 1);

то работает.

Полный код:

авторpublic class ChartWindow extends Application {
List<Object[]> data;


@Override
public void start(Stage stage) throws Exception {
stage.setTitle("Данные в разрезе: день");

final CategoryAxis xAxis = new CategoryAxis();
final NumberAxis yAxis = new NumberAxis();
yAxis.setTickUnit(1.0);
xAxis.setLabel("Дата");
yAxis.setLabel("шт");
yAxis.setTickUnit(1);


final LineChart<String, Number> lineChart = new LineChart<>(xAxis, yAxis);

lineChart.setTitle("Данные за период");
lineChart.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);

//defining a series
XYChart.Series<String, Number> series = new XYChart.Series<>();
series.setName("Инциденты");
addData(series, new Object[]{"1" ,21});
addData(series, new Object[]{"2" ,1});
addData(series, new Object[]{"3" ,3});
addData(series, new Object[]{"4" ,43});
addData(series, new Object[]{"5" ,13});
addData(series, new Object[]{"6" ,6});

//defining a series
XYChart.Series<String, Number> series2 = new XYChart.Series<>();
series2.setName("Инциденты2");
addData(series2, new Object[]{"1" ,12});
addData(series2, new Object[]{"2" ,13});
addData(series2, new Object[]{"3" ,34});
addData(series2, new Object[]{"4" ,43});
addData(series2, new Object[]{"5" ,1});
addData(series2, new Object[]{"6" ,10});

lineChart.getData().add(series);
lineChart.getData().add(series2);

Scene scene = new Scene(lineChart, 800, 600);
stage.setScene(scene);
stage.show();
}

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

private static void addData(XYChart.Series<String, Number> series, Object[] objects) {
final XYChart.Data<String, Number> data = new XYChart.Data<>((String) objects[0], (Number) objects[1]);
series.getData().add(data);
data.nodeProperty().addListener(new ChangeListener<Node>() {
@Override
public void changed(ObservableValue<? extends Node> observableValue, Node node, Node node2) {
Tooltip t = new Tooltip("y: " + data.getYValue().toString() + "; x: " + data.getXValue());
Tooltip.install(node2, t);
data.nodeProperty().removeListener(this);

}
});
}
}
...
Рейтинг: 0 / 0
JavaFX Charts unitTick
    #38487674
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по доке оно работает в 2х режимах: auto-ranging on и auto-ranging off.
Поэтому когда создаётся auto-ranging on через дефолтный конструктор, то tickUnit всегда вычисляется и его нельзя установить.
...
Рейтинг: 0 / 0
JavaFX Charts unitTick
    #38487675
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());


у меня, правда, целочисленные измерения
...
Рейтинг: 0 / 0
JavaFX Charts unitTick
    #38487687
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra
Код: java
1.
yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());


у меня, правда, целочисленные измерения

это точно не jfree?
...
Рейтинг: 0 / 0
JavaFX Charts unitTick
    #38487692
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСудя по доке оно работает в 2х режимах: auto-ranging on и auto-ranging off.
Поэтому когда создаётся auto-ranging on через дефолтный конструктор, то tickUnit всегда вычисляется и его нельзя установить.

да спс, не прочел чето этого.
...
Рейтинг: 0 / 0
JavaFX Charts unitTick
    #38487701
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, это jfreechart, проглядел заголовок. На всякий случай полный код, может найдется аналог:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	private JFreeChart createChart(final XYDataset dataset) {
		JFreeChart chart = ChartFactory.createTimeSeriesChart(
				null, null, null, 
				dataset, 
				true, true, false);
		XYPlot plot = chart.getXYPlot();
		NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
		rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
		DateAxis axis = (DateAxis) plot.getDomainAxis();
		axis.setDateFormatOverride(new SimpleDateFormat("HH:mm"));

		return chart;
	}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaFX Charts unitTick
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]