Можно ли манипулировать положением оси Домена на графике JFreeChart? - PullRequest
2 голосов
/ 29 августа 2011

У меня есть набор данных, который я хочу отобразить в виде пары гистограмм / диаграмм. Один набор данных я хочу отобразить как «положительный» набор значений, восходящих вверх. Второй набор мне нужно отобразить как «отрицательный» набор по убыванию. У них общая доменная ось.

Я могу нарисовать их как угодно, используя CombinedDomainCategoryPlot, но для одной важной детали - ось появляется под вторым графиком, тогда как мне бы хотелось, чтобы она находилась посередине между двумя графиками.

Для записи, эти данные являются тегами последовательности, которые были сопоставлены с последовательностью генома. Некоторые отображаются на «верхнюю» цепь генома, а другие - на «нижнюю» или «обратную» цепь, поэтому цель визуализации - представить данные таким образом. Я надеялся, что смогу просто повернуть нижнюю ось значений графика и получить ось домена в середине, но, похоже, это не сработает.

Я предполагаю, что мне придется создать подкласс или заменить класс CombinedDomainCategoryPlot, но если кто-то уже нашел способ обойти это или знает, как сделать это правильно в текущих пределах кода, я был бы признателен. Опять же, для записи, я работаю с версией 1.0.12 JFreeChart (из-за нарушения зависимости maven с «текущей» версией 1.0.13). К сожалению, форумы JFreeChart, похоже, тоже мертвы.

1 Ответ

2 голосов
/ 29 августа 2011

Проблема заключается в CombinedDomainCategoryPlot сбрасывании домена на добавленном участке. От CombinedDomainCategoryPlot.java:

public void add(CategoryPlot subplot, int weight) {
  // [..] omitted code
  subplot.setDomainAxis(null);
  // [..] omitted code
}

Решение состоит в том, чтобы просто установить ось домена после добавления подпункта:

CombinedDomainCategoryPlot mainPlot = // your plot;
CategoryAxis axis = // the axis you want to use.
CategoryPlot subPlot // the subplot in question
mainPlot.add(subPlot);
subPlot.setDomainAxis(axis);
...