fix x-axis labels overlap when zooming out
The x-axis labels overlapped when zooming out too far. Fixed by increasing the step size and reducint the labels to year only.
This commit is contained in:
@@ -11,13 +11,15 @@ import org.lucares.pdb.plot.api.AxisScale;
|
|||||||
import org.lucares.recommind.logs.AxisSettings.Type;
|
import org.lucares.recommind.logs.AxisSettings.Type;
|
||||||
|
|
||||||
public class AxisTime {
|
public class AxisTime {
|
||||||
public static AxisSettings createXAxis(GnuplotSettings settings) {
|
public static AxisSettings createXAxis(final GnuplotSettings settings) {
|
||||||
AxisSettings result = new AxisSettings();
|
final AxisSettings result = new AxisSettings();
|
||||||
|
|
||||||
final OffsetDateTime minDate = settings.getDateTimeRange().getStart();
|
final OffsetDateTime minDate = settings.getDateTimeRange().getStart();
|
||||||
final OffsetDateTime maxDate = settings.getDateTimeRange().getEnd();
|
final OffsetDateTime maxDate = settings.getDateTimeRange().getEnd();
|
||||||
final String formatX;
|
final String formatX;
|
||||||
if (minDate.until(maxDate, ChronoUnit.WEEKS) > 1) {
|
if (minDate.until(maxDate, ChronoUnit.YEARS) > 1) {
|
||||||
|
formatX = "%Y";
|
||||||
|
} else if (minDate.until(maxDate, ChronoUnit.WEEKS) > 1) {
|
||||||
formatX = "%Y-%m-%d";
|
formatX = "%Y-%m-%d";
|
||||||
} else if (minDate.until(maxDate, ChronoUnit.SECONDS) > 30) {
|
} else if (minDate.until(maxDate, ChronoUnit.SECONDS) > 30) {
|
||||||
formatX = "%Y-%m-%d\\n%H:%M:%S";
|
formatX = "%Y-%m-%d\\n%H:%M:%S";
|
||||||
@@ -37,8 +39,8 @@ public class AxisTime {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AxisSettings createYAxis(GnuplotSettings settings, Collection<DataSeries> dataSeries) {
|
public static AxisSettings createYAxis(final GnuplotSettings settings, final Collection<DataSeries> dataSeries) {
|
||||||
AxisSettings result = new AxisSettings();
|
final AxisSettings result = new AxisSettings();
|
||||||
result.setLabel("Duration");
|
result.setLabel("Duration");
|
||||||
result.setType(Type.Duration);
|
result.setType(Type.Duration);
|
||||||
result.setAxis(GnuplotAxis.Y1);
|
result.setAxis(GnuplotAxis.Y1);
|
||||||
@@ -61,12 +63,12 @@ public class AxisTime {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double computeTimeTicIncrement(int width, DateTimeRange dateTimeRange) {
|
public static double computeTimeTicIncrement(final int width, final DateTimeRange dateTimeRange) {
|
||||||
final long startEpochMilli = dateTimeRange.getStartEpochMilli();
|
final long startEpochMilli = dateTimeRange.getStartEpochMilli();
|
||||||
final long endEpochMilli = dateTimeRange.getEndEpochMilli();
|
final long endEpochMilli = dateTimeRange.getEndEpochMilli();
|
||||||
final long rangeInMs = endEpochMilli - startEpochMilli + 1;
|
final long rangeInMs = endEpochMilli - startEpochMilli + 1;
|
||||||
|
|
||||||
int widthInPx = width - GnuplotSettings.GNUPLOT_LEFT_RIGHT_MARGIN;
|
final int widthInPx = width - GnuplotSettings.GNUPLOT_LEFT_RIGHT_MARGIN;
|
||||||
|
|
||||||
final long maxLabels = Math.max(1, widthInPx / (GnuplotSettings.TICKS_FONT_SIZE * 8));
|
final long maxLabels = Math.max(1, widthInPx / (GnuplotSettings.TICKS_FONT_SIZE * 8));
|
||||||
|
|
||||||
@@ -74,19 +76,25 @@ public class AxisTime {
|
|||||||
return tickIncrement / 1000.0;
|
return tickIncrement / 1000.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long roundToTickIncrement(long milliseconds) {
|
private static long roundToTickIncrement(final long milliseconds) {
|
||||||
LongList increments = LongList.of(100, 200, 500, TimeUnit.SECONDS.toMillis(1), TimeUnit.SECONDS.toMillis(2),
|
final LongList increments = LongList.of(100, 200, 500, TimeUnit.SECONDS.toMillis(1),
|
||||||
TimeUnit.SECONDS.toMillis(5), TimeUnit.SECONDS.toMillis(10), TimeUnit.SECONDS.toMillis(15),
|
TimeUnit.SECONDS.toMillis(2), TimeUnit.SECONDS.toMillis(5), TimeUnit.SECONDS.toMillis(10),
|
||||||
TimeUnit.SECONDS.toMillis(30), TimeUnit.MINUTES.toMillis(1), TimeUnit.MINUTES.toMillis(2),
|
TimeUnit.SECONDS.toMillis(15), TimeUnit.SECONDS.toMillis(30), TimeUnit.MINUTES.toMillis(1),
|
||||||
TimeUnit.MINUTES.toMillis(5), TimeUnit.MINUTES.toMillis(10), TimeUnit.MINUTES.toMillis(15),
|
TimeUnit.MINUTES.toMillis(2), TimeUnit.MINUTES.toMillis(5), TimeUnit.MINUTES.toMillis(10),
|
||||||
TimeUnit.MINUTES.toMillis(30), TimeUnit.HOURS.toMillis(1), TimeUnit.HOURS.toMillis(2),
|
TimeUnit.MINUTES.toMillis(15), TimeUnit.MINUTES.toMillis(30), TimeUnit.HOURS.toMillis(1),
|
||||||
TimeUnit.HOURS.toMillis(3), TimeUnit.HOURS.toMillis(6), TimeUnit.HOURS.toMillis(12),
|
TimeUnit.HOURS.toMillis(2), TimeUnit.HOURS.toMillis(3), TimeUnit.HOURS.toMillis(6),
|
||||||
TimeUnit.HOURS.toMillis(18), TimeUnit.DAYS.toMillis(1), TimeUnit.DAYS.toMillis(2),
|
TimeUnit.HOURS.toMillis(12), TimeUnit.HOURS.toMillis(18), TimeUnit.DAYS.toMillis(1),
|
||||||
TimeUnit.DAYS.toMillis(3), TimeUnit.DAYS.toMillis(4), TimeUnit.DAYS.toMillis(5),
|
TimeUnit.DAYS.toMillis(2), TimeUnit.DAYS.toMillis(3), TimeUnit.DAYS.toMillis(4),
|
||||||
TimeUnit.DAYS.toMillis(6), TimeUnit.DAYS.toMillis(7), TimeUnit.DAYS.toMillis(14),
|
TimeUnit.DAYS.toMillis(5), TimeUnit.DAYS.toMillis(6), TimeUnit.DAYS.toMillis(7),
|
||||||
TimeUnit.DAYS.toMillis(30), TimeUnit.DAYS.toMillis(90), TimeUnit.DAYS.toMillis(180),
|
TimeUnit.DAYS.toMillis(14), TimeUnit.DAYS.toMillis(30), TimeUnit.DAYS.toMillis(90),
|
||||||
TimeUnit.DAYS.toMillis(365), TimeUnit.DAYS.toMillis(365 * 2), TimeUnit.DAYS.toMillis(365 * 5),
|
TimeUnit.DAYS.toMillis(180), TimeUnit.DAYS.toMillis(365), TimeUnit.DAYS.toMillis(365 * 2),
|
||||||
TimeUnit.DAYS.toMillis(365 * 10), TimeUnit.DAYS.toMillis(365 * 20));
|
TimeUnit.DAYS.toMillis(365 * 5), TimeUnit.DAYS.toMillis(365 * 10), TimeUnit.DAYS.toMillis(365 * 20),
|
||||||
|
TimeUnit.DAYS.toMillis(365 * 50), TimeUnit.DAYS.toMillis(365 * 100), TimeUnit.DAYS.toMillis(365 * 500),
|
||||||
|
TimeUnit.DAYS.toMillis(365 * 1000), TimeUnit.DAYS.toMillis(365 * 2000),
|
||||||
|
TimeUnit.DAYS.toMillis(365 * 5000), TimeUnit.DAYS.toMillis(365 * 10000),
|
||||||
|
TimeUnit.DAYS.toMillis(365 * 20000), TimeUnit.DAYS.toMillis(365 * 50000),
|
||||||
|
TimeUnit.DAYS.toMillis(365 * 100000), TimeUnit.DAYS.toMillis(365 * 200000),
|
||||||
|
TimeUnit.DAYS.toMillis(365 * 500000));
|
||||||
|
|
||||||
for (int i = 0; i < increments.size(); i++) {
|
for (int i = 0; i < increments.size(); i++) {
|
||||||
if (increments.get(i) > milliseconds) {
|
if (increments.get(i) > milliseconds) {
|
||||||
|
|||||||
Reference in New Issue
Block a user