У меня есть Map
типа <String, List<Object>>
, который содержит имена и координаты (Double = X,Y
).Эти значения используются для создания графиков.Проблема, с которой я столкнулся, заключается в том, что некоторые точки имеют одинаковые координаты и, следовательно, они едва различимы, поскольку они появляются одна над другой.Чтобы решить эту проблему, я подумал о том, чтобы искать в Списке с помощью двойного цикла и увеличивать на 0,01 только точки X, если X и Y появляются в List
более одного раза.
Пример вывода:
Point1 [[0.1,0.1,0.1,0.1,0.1,0.1],[0.2,0.3,0.4,0.5,0.6,0.7]]
Point2 [[0.1,0.1,0.1,0.1] ,[0.4,0.5,0.6,0.7]]
Point3 [[0.1,0.1] ,[0.6,0.7]]
В этом случае Point1(0.1,0.4)
и Point2(0.1,0.4)
появятся друг над другом.Что я хочу сделать, так это увеличить Point1(0.1+0.01,0.4)
, чтобы оба были видны.
Мой код:
double i=0.01;
for (Map.Entry<String, Set<Coordinates>> serie : nameToCoordinates.entrySet()) {
List<Double> xData = new ArrayList<>();
List<Double> yData = new ArrayList<>();
for (Coordinates coord : serie.getValue()) {
for (Map.Entry<String, Set<Coordinates>> serie2 : nameToCoordinates.entrySet()) {
for (Coordinates coord2 : serie.getValue()) {
if (!serie.getKey().equals(serie2.getKey())) {
if (coord.getX()==coord2.getX() && coord.getY()==coord2.getY()) {
xData.add(coord.getX()+i);
yData.add(coord.getY());
}
}
else {
xData.add(coord.getX());
yData.add(coord.getY());
}
}
}
}
i=i+0.01;
chart.addSeries(serie.getKey(), xData, yData);
}
Этот трюк исправил некоторые точки, и теперь больше их видно,Но не все из них.Любые идеи о том, как я могу сделать это более эффективно и как избежать увеличения точек на вершине других?