if (ldata.size() > 0) {
                TreeSet<String> orderedKeys = new TreeSet<String>(ldata.keySet());
                String[] allKeys = orderedKeys.toArray(new String[ldata.size()]);
                KpiData refData = ldata.get(allKeys[0]);
                PlotBuilder builder = pc.newPlot().update(baseName + "/" + refData.getPlotKey()).title(refData.getPlotKey());

                for (String kk : orderedKeys) {
                    KpiData data = ldata.get(kk);
                    NamePath npp = NamePath.parse(data.getKey());
                    Object p = all.get(npp);
                    if (p != null) {
                        if (p instanceof Number) {
                            data.add(date, ((Number) p).doubleValue());
                            data.ensureSize(maxSize);
                        }
                    }
                    builder.add(data.getY());
                    builder.addTitle(data.getTitle());
                }
                builder.asCurve();
                builder.cd(baseName + "/" + refData.getPath());
                builder.xsamples(refData.getX());
                builder.yformat(
                        "frequency".equals(refData.getYformatter()) ? JvmOnUtils.FREQUENCY_FORMATTER
                        : "memory".equals(refData.getYformatter()) ? JvmOnUtils.MEMORY_SIZE_FORMATTER
                        : "dimension".equals(refData.getYformatter()) ? JvmOnUtils.METRIC_FORMATTER
                        : (DoubleFormat) null
                );
                builder.xname("Date/Time");
                builder.plot();
            }
