2014-10-23 6 views
1

Я пытаюсь закодировать класс с именем MultipleAxisLineChart. Как следует из названия, это будет LineChart, который будет иметь несколько осей (я предполагаю, что все дополнительные оси будут размещены либо на Side.LEFT, либо на Side.RIGHT).Настройка ширины участка линии LineChart

Все оси с заданной стороны будут расположены на tickLabelGapProperty. Правые оси должны быть дополнительно x-переведены суммой ширины левых боковых осей.

Проблема возникла, когда я пришел к моменту вычисления предпочтительной ширины диаграммы (учитывая мои предыдущие предположения, области графиков будут иметь одинаковый размер, поэтому они могут быть размещены сверху друг друга). Свойство LineChart#widthProperty возвращает ширину всего объекта LineChart (включая свойство оси Y и свойство зазора) - так что этот, безусловно, не будет лучшим кандидатом для установки одинаковой ширины для всех областей сюжета LineChart (так как мне пришлось бы вычислять разную ширину для каждый график - помните, что tickLabelGap отличается для каждого).

Я могу получить (и даже установить) ширину оси (только Axis#widthProperty), но не LineChart участок площадь ширина. Итак, мой вопрос: есть ли способ произвольно установить ширину LineChartучасток, чтобы все области в разных диаграммах имели одинаковую ширину?

обновление

Я пытаюсь добиться эффекта, подобного HighCharts нескольким осямов: (C) Screen from HighCharts Demo website Моей попытки использовать StackPane и добавить все диаграммы, как дети. Я мог бы контролировать размер диаграммы, установив ширину стека.

+0

Что вы делаете? Вы подклассифицируете LineChart и создаете собственную диаграмму с несколькими осями или используете [StackPane для наложения нескольких диаграмм друг на друга] (http://stackoverflow.com/questions/9667405/how-to-draw-multiple- ось-на-а-чарт-с помощью JavaFX-карт-)? Это [решение для нескольких осей на диаграмме] (http://stackoverflow.com/questions/26303111/move-tick-label-javafx-2) полезно (это немного взломать)? Я советую затянуть вопрос и облегчить кому-то ответить ([mcve] (http://stackoverflow.com/help/mcve) или изображение). – jewelsea

+0

@jewelsea Спасибо за ответ. Я обновил свой вопрос. Я подклассифицирую StackPane. «Решение с несколькими осями на диаграмме» не совсем то, что я ищу. Я думаю, что прилагаемая картина будет говорить сама за себя :) –

+0

Картина говорит тысячу слов, красивая диаграмма .. попробуйте начать свою работу с [этого образца] (https://gist.github.com/jewelsea/3668862) в сочетании с ответ на вопрос с несколькими осями и посмотреть, можете ли вы воспроизвести диаграмму в своем вопросе. Бонусные баллы, если вы можете [сделать его динамическим] (https://gist.github.com/jewelsea/2129306). Подклассификация, а не укладка, вероятно, является «правильным» способом сделать это, но будет сложнее достичь. – jewelsea

ответ

1

Проблема была решена. Не нужно было использовать tickLabelGapProperty в позиции LineChart. Это может испортить всю идею, потому что ее переход считается шириной компонента.

Перемещение оси может быть выполнено только Axis#setTranslateX(double).

Возвращаясь к MultipleAxisLineChart - я создал нечто похожее на то, что я представил. Here вы можете узнать больше.

Смежные вопросы