List of usage examples for org.jfree.data.statistics HistogramDataset addSeries
public void addSeries(Comparable key, double[] values, int bins, double minimum, double maximum)
From source file:org.jfree.data.statistics.HistogramDatasetTest.java
/** * Some checks for bug 1553088. An IndexOutOfBoundsException is thrown * when a data value is *very* close to the upper limit of the last bin. */// ww w . j a v a2s. co m @Test public void test1553088() { double[] values = { -1.0, 0.0, -Double.MIN_VALUE, 3.0 }; HistogramDataset d = new HistogramDataset(); d.addSeries("S1", values, 2, -1.0, 0.0); assertEquals(-1.0, d.getStartXValue(0, 0), EPSILON); assertEquals(-0.5, d.getEndXValue(0, 0), EPSILON); assertEquals(1.0, d.getYValue(0, 0), EPSILON); assertEquals(-0.5, d.getStartXValue(0, 1), EPSILON); assertEquals(0.0, d.getEndXValue(0, 1), EPSILON); assertEquals(3.0, d.getYValue(0, 1), EPSILON); }
From source file:org.jfree.data.statistics.HistogramDatasetTest.java
/** * This test is derived from a reported bug. *///from ww w. j a v a 2 s . c om @Test public void testBinBoundaries() { double[] values = { -5.000000000000286E-5 }; int bins = 1260; double minimum = -0.06307522528160199; double maximum = 0.06297522528160199; HistogramDataset d = new HistogramDataset(); d.addSeries("S1", values, bins, minimum, maximum); assertEquals(0.0, d.getYValue(0, 629), EPSILON); assertEquals(1.0, d.getYValue(0, 630), EPSILON); assertEquals(0.0, d.getYValue(0, 631), EPSILON); assertTrue(values[0] > d.getStartXValue(0, 630)); assertTrue(values[0] < d.getEndXValue(0, 630)); }
From source file:edu.ku.brc.specify.plugins.sgr.HistogramChart.java
private void update() { UIRegistry.loadAndPushResourceBundle("specify_plugins"); HistogramDataset dataSet = new HistogramDataset(); double max = resultSet.getMax(); dataSet.addSeries(getResourceString("SGR_HISTO_DATASERIES"), resultSet.getValues(1.0), 40, 0.0, max); JFreeChart chart = ChartFactory.createHistogram(getResourceString("SGR_HISTO_TITLE"), getResourceString("SGR_HISTO_X_AXIS"), getResourceString("SGR_HISTO_Y_AXIS"), dataSet, PlotOrientation.VERTICAL, false, // include legend true, // tooltips? false // URLs? );/*from ww w .j ava2s . co m*/ UIRegistry.popResourceBundle(); XYPlot plot = chart.getXYPlot(); CustomRenderer.setDefaultBarPainter(new StandardXYBarPainter()); CustomRenderer renderer = new CustomRenderer(dataSet); plot.setRenderer(renderer); renderer.setMargin(0.1); ChartPanel chartPanel = new ChartPanel(chart, true, true, true, true, true); removeAll(); add(chartPanel); validate(); }
From source file:gda.gui.dv.panels.vispanels.ColourSelector.java
/** * The function that performs the histogram Drawing * /* www . j a v a 2 s. com*/ * @param raw * the raw data * @return the new data in the appropriate form */ @Override public ImageData cast(DoubleDataset raw) { dataLink = raw; if (max == null) { max = raw.max().doubleValue(); } if (min == null) { min = raw.min().doubleValue(); } ImageData result = colourCast(raw, max, min); // if old stuff exists then remove it. if (chart != null) { chart.removeAll(); } // now plot the histogram HistogramDataset histData = new HistogramDataset(); histData.addSeries("h1", raw.getData(), 100, min, max); histogram = ChartFactory.createHistogram("Histogram", "Value", "Counts", histData, PlotOrientation.VERTICAL, false, false, false); if (unconfigured == false) { this.remove(chart); } unconfigured = false; chart = new DrawChart(histogram); chart.setMouseZoomable(false); chart.setPreferredSize(new Dimension(300, 300)); chart.setMinimumSize(new Dimension(200, 200)); c.gridx = 0; c.gridy = 4; c.gridwidth = 2; this.add(chart, c); chart.addMouseListener(new MouseListener() { Double tmin = min; Double tmax = max; @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void mousePressed(MouseEvent e) { SimpleDataCoordinate coordinates = convertMouseEvent(e); if (chart.getScreenDataArea().contains(e.getX(), e.getY())) { tmin = coordinates.getX(); } else { if (chart.getScreenDataArea().outcode(e.getX(), e.getY()) != Rectangle2D.OUT_RIGHT) { // System.out.println("out of bounds"); // System.out.printf("Mouse: %d\n", e.getX()); } else { tmin = max; } } } @Override public void mouseReleased(MouseEvent e) { boolean update = false; SimpleDataCoordinate coordinates = convertMouseEvent(e); if (chart.getScreenDataArea().contains(e.getX(), e.getY())) { tmax = coordinates.getX(); update = true; } else { if (chart.getScreenDataArea().outcode(e.getX(), e.getY()) != Rectangle2D.OUT_LEFT) { // System.out.println("out of bounds"); // System.out.printf("Mouse: %d\n", e.getX()); } else { tmax = min; update = true; } } if (update && tmin != tmax) { if (tmin > tmax) { // check and correct limits Double t = tmin; tmin = tmax; tmax = t; } min = tmin; max = tmax; owner.getDataSetImage().applyColorCast(); owner.getDataSetPlot3D().applyColorCast(); owner.getDataSetImage().repaint(); } } public SimpleDataCoordinate convertMouseEvent(MouseEvent me) { return new SimpleDataCoordinate( histogram.getXYPlot().getDomainAxis().java2DToValue(me.getX(), chart.getScreenDataArea(), histogram.getXYPlot().getDomainAxisEdge()), histogram.getXYPlot().getRangeAxis().java2DToValue(me.getY(), chart.getScreenDataArea(), histogram.getXYPlot().getRangeAxisEdge())); } }); lblchart.invalidate(); lblchart.validate(); this.invalidate(); this.validate(); return result; }
From source file:fr.ens.transcriptome.corsen.gui.qt.ResultGraphs.java
public QImage createDistanceDistributionImage(final double[] data, final int classes, final String unit) { if (data == null || data.length < 2) return null; HistogramDataset histogramdataset = new HistogramDataset(); histogramdataset.addSeries("Min distances", data, classes, getMin(data), getMax(data)); // createHistoDataSet(results.getMaxDistances(), "Max distances", // histogramdataset); JFreeChart chart = ChartFactory.createHistogram("Distribution of minimal distances", // title "Distance" + unitLegend(unit), // domain axis label "Cell number", // range axis label histogramdataset, // data PlotOrientation.VERTICAL, // orientation false, // include legend true, // tooltips? false // URLs? );//from ww w .j a v a 2s. c o m addTransparency(chart); final BufferedImage image = chart.createBufferedImage(this.width, this.height, BufferedImage.TYPE_INT_ARGB, null); return new QImage(toByte(image.getData().getDataBuffer()), this.width, this.height, QImage.Format.Format_ARGB32); }
From source file:at.tuwien.ifs.feature.evaluation.SimilarityRetrievalGUI.java
private void initButtonStart() { btnStart = new JButton("Start"); btnStart.setEnabled(false);// ww w. j a va 2 s . com btnStart.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Enumeration<AbstractButton> elements = bgInputData.getElements(); while (elements.hasMoreElements()) { InputDataRadioButton rb = (InputDataRadioButton) elements.nextElement(); if (rb.isSelected()) { AbstractSOMLibSparseInputData inputData = rb.inputData; try { @SuppressWarnings("unchecked") Class<? extends DistanceMetric> selectedClass = ((ClassComboBoxModel<DistanceMetric>) boxMetric .getModel()).getSelectedClass(); int inputDatumIndex = inputData .getInputDatumIndex((String) comboQueryVector.getSelectedItem()); DistanceMetric metric = AbstractMetric.instantiateNice(selectedClass.getName()); ArrayList<InputDistance> distances = inputData.getDistances(inputDatumIndex, metric); Collections.sort(distances); // prepare the data for the table double maxDistance = distances.get(distances.size() - 1).getDistance(); int neighbours = modelNumberNeighbours.getNumber().intValue(); String actionCommand = bgDistanceDisplay.getSelection().getActionCommand(); boolean isAbsolute = !actionCommand.equals("relative"); Object[][] data = new Object[neighbours][3]; if (isAbsolute) { for (int i = 0; i < data.length; i++) { data[i] = new Object[] { i + 1, distances.get(i).getInput().getLabel(), NumberUtils.setScale(4, distances.get(i).getDistance()) }; } } else { for (int i = 0; i < data.length; i++) { data[i] = new Object[] { i + 1, distances.get(i).getInput().getLabel(), StringUtils.formatAsPercent(distances.get(i).getDistance(), maxDistance, 3) }; } } resultsTable.setModel(new DefaultTableModel(data, resultColumnNames)); resizeResultTableColumns(); // prepare the data for the chart double[] values = InputDistance.getDistanceValuesOnly(distances); if (!isAbsolute) { // convert values to percent for (int i = 0; i < values.length; i++) { values[i] = values[i] * 100.0 / maxDistance; } } HistogramDataset ds = new HistogramDataset(); ds.addSeries("Distance", values, 100, 0, isAbsolute ? maxDistance : 100); JFreeChart chart = ChartFactory.createHistogram(null, isAbsolute ? "absolute distance" : "distance in percent", "# of objects", ds, PlotOrientation.VERTICAL, false, true, true); chartPanel.setChart(chart); } catch (SOMToolboxException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } // enable the saveAs button btnSaveResults.setEnabled(true); } }); }
From source file:org.locationtech.udig.processingtoolbox.tools.HistogramDialog.java
private void updateChart(SimpleFeatureCollection features, String field) { int bin = spinner.getSelection(); double[] values = getValues(features, field); HistogramDataset dataset = new HistogramDataset(); dataset.addSeries(field, values, bin, minMaxVisitor.getMinX(), minMaxVisitor.getMaxX()); dataset.setType(histogramType);//from w w w . j a va 2s .c o m JFreeChart chart = ChartFactory.createHistogram(EMPTY, null, null, dataset, PlotOrientation.VERTICAL, false, false, false); // 1. Create a single plot containing both the scatter and line chart.setBackgroundPaint(java.awt.Color.WHITE); chart.setBorderVisible(false); XYPlot plot = (XYPlot) chart.getPlot(); plot.setForegroundAlpha(0.85F); plot.setBackgroundPaint(java.awt.Color.WHITE); plot.setOrientation(PlotOrientation.VERTICAL); plot.setDomainGridlinePaint(java.awt.Color.LIGHT_GRAY); plot.setRangeGridlinePaint(java.awt.Color.LIGHT_GRAY); int fontStyle = java.awt.Font.BOLD; FontData fontData = getShell().getDisplay().getSystemFont().getFontData()[0]; NumberAxis valueAxis = new NumberAxis(cboField.getText()); valueAxis.setLabelFont(new Font(fontData.getName(), fontStyle, 12)); valueAxis.setTickLabelFont(new Font(fontData.getName(), fontStyle, 10)); valueAxis.setAutoRange(false); valueAxis.setRange(minMaxVisitor.getMinX(), minMaxVisitor.getMaxX()); String rangeAxisLabel = histogramType == HistogramType.FREQUENCY ? "Frequency" : "Ratio"; //$NON-NLS-1$ //$NON-NLS-2$ NumberAxis rangeAxis = new NumberAxis(rangeAxisLabel); rangeAxis.setLabelFont(new Font(fontData.getName(), fontStyle, 12)); rangeAxis.setTickLabelFont(new Font(fontData.getName(), fontStyle, 10)); if (histogramType == HistogramType.FREQUENCY) { rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); } XYBarRenderer renderer = (XYBarRenderer) plot.getRenderer(); renderer.setShadowVisible(false); CustomXYBarPainter.selectedColumn = -1; // init renderer.setBarPainter(new CustomXYBarPainter()); renderer.setAutoPopulateSeriesFillPaint(true); renderer.setAutoPopulateSeriesPaint(true); renderer.setShadowXOffset(3); renderer.setMargin(0.01); renderer.setBaseItemLabelsVisible(true); ItemLabelPosition pos = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.TOP_CENTER); renderer.setBasePositiveItemLabelPosition(pos); XYToolTipGenerator plotToolTip = new StandardXYToolTipGenerator(); renderer.setBaseToolTipGenerator(plotToolTip); // color GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, java.awt.Color.GRAY, 0.0f, 0.0f, java.awt.Color.LIGHT_GRAY); renderer.setSeriesPaint(0, gp0); plot.setDomainAxis(0, valueAxis); plot.setRangeAxis(0, rangeAxis); // 3. Setup line // Create the line data, renderer, and axis XYItemRenderer lineRenderer = new XYLineAndShapeRenderer(true, false); // Lines only lineRenderer.setSeriesPaint(0, java.awt.Color.RED); lineRenderer.setSeriesStroke(0, new BasicStroke(2f)); // Set the line data, renderer, and axis into plot NumberAxis xLineAxis = new NumberAxis(EMPTY); xLineAxis.setTickMarksVisible(false); xLineAxis.setTickLabelsVisible(false); xLineAxis.setAutoRange(false); NumberAxis yLineAxis = new NumberAxis(EMPTY); yLineAxis.setTickMarksVisible(false); yLineAxis.setTickLabelsVisible(false); yLineAxis.setAutoRange(false); double maxYValue = Double.MIN_VALUE; for (int i = 0; i < dataset.getItemCount(0); i++) { maxYValue = Math.max(maxYValue, dataset.getYValue(0, i)); } XYSeriesCollection lineDatset = new XYSeriesCollection(); // Vertical Average XYSeries vertical = new XYSeries("Average"); //$NON-NLS-1$ vertical.add(minMaxVisitor.getAverageX(), 0); vertical.add(minMaxVisitor.getAverageX(), maxYValue); lineDatset.addSeries(vertical); plot.setDataset(1, lineDatset); plot.setRenderer(1, lineRenderer); plot.setDomainAxis(1, xLineAxis); plot.setRangeAxis(1, yLineAxis); // Map the line to the second Domain and second Range plot.mapDatasetToDomainAxis(1, 0); plot.mapDatasetToRangeAxis(1, 0); chartComposite.setChart(chart); chartComposite.forceRedraw(); }
From source file:visualizer.projection.distance.view.DistanceHistogram.java
private IntervalXYDataset createDataset(DistanceMatrix dmat) { HistogramDataset histogramdataset = new HistogramDataset(); int nrDistances = ((dmat.getElementCount() * dmat.getElementCount()) - dmat.getElementCount()) / 2; double[] ad = new double[nrDistances]; int index = 0; for (int i = 0; i < dmat.getElementCount() - 1; i++) { for (int j = dmat.getElementCount() - 1; j > i; j--) { ad[index] = (dmat.getDistance(i, j) - dmat.getMinDistance()) / (dmat.getMaxDistance() - dmat.getMinDistance()); index++;/* w w w. jav a2 s . c o m*/ } } histogramdataset.addSeries("", ad, 200, 0, 1); return histogramdataset; }
From source file:ws.moor.bt.gui.charts.RemotePeerCompletion.java
private HistogramDataset getDataSet() { HistogramDataset dataset = new HistogramDataset(); dataset.setType(HistogramType.FREQUENCY); List<Double> values = CollectionUtils.mapNullRemoves(download.getAllValidConnections(), new CollectionUtils.Function<BitTorrentConnection, Double>() { public Double evaluate(BitTorrentConnection connection) { BitField bitField = connection.getRemoteBitField(); if (bitField == null || !connection.isOpen()) { return null; }//from w w w. java2s.com return 100.0 * bitField.getAvailablePieceCount() / bitField.getPieceCount(); } }); dataset.addSeries("Completion", CollectionUtils.toArray(values), 50, 0.0, 100.0); return dataset; }
From source file:se.sics.kompics.p2p.monitor.cyclon.server.CyclonMonitorServer.java
private void printAlivePeers(StringBuilder sb, boolean showPeers) { long t0 = System.currentTimeMillis(); GraphUtil g = new GraphUtil(alivePeers); long t1 = System.currentTimeMillis(); double id, od, cc, pl, istd; int diameter; id = g.getMeanInDegree();//w ww.ja va 2 s . c o m istd = g.getInDegreeStdDev(); od = g.getMeanOutDegree(); cc = g.getMeanClusteringCoefficient(); pl = g.getMeanPathLength(); diameter = g.getDiameter(); int netSize = g.getNetworkSize(); sb.append("<h2 align=\"center\" class=\"style2\">"); sb.append("View of Cyclon Random Overlay:</h2>"); sb.append("<table width=\"400\" border=\"1\" align=\"center\"><tr>"); sb.append("<th class=\"style2\" width=\"250\" scope=\"col\">Metric"); sb.append("</th><th class=\"style2\""); sb.append(" width=\"150\" scope=\"col\">Value</th></tr><tr>"); sb.append("<td>Network size</td><td><div align=\"center\">"); sb.append(netSize).append("</div></td></tr>"); sb.append("<td>Disconnected node pairs</td><td><div align=\"center\">"); sb.append(g.getInfinitePathCount()).append("/"); sb.append(netSize * (netSize - 1)).append("</div></td></tr>"); sb.append("<td>Diameter</td><td><div align=\"center\">"); sb.append(diameter).append("</div></td></tr>"); sb.append("<td>Average path length</td><td><div align=\"center\">"); sb.append(String.format("%.4f", pl)).append("</div></td></tr>"); sb.append("<td>Clustering-coefficient</td><td><div align=\"center\">"); sb.append(String.format("%.4f", cc)).append("</div></td></tr>"); sb.append("<td>Average in-degree</td><td><div align=\"center\">"); sb.append(String.format("%.4f", id)).append("</div></td></tr>"); sb.append("<td>In-degree standard deviation</td><td><div align=\"center\">"); sb.append(String.format("%.4f", istd)).append("</div></td></tr>"); sb.append("<td>Average out-degree</td><td><div align=\"center\">"); sb.append(String.format("%.4f", od)).append("</div></td></tr>"); sb.append("</table>"); // print in-degree distribution HistogramDataset dataset = new HistogramDataset(); double[] values = g.getInDegrees(); int min = (int) g.getMinInDegree(), max = (int) g.getMaxInDegree(); int bins = max - min; bins = bins < 1 ? 1 : bins; dataset.addSeries("In-degree distribution", values, bins, min, max); JFreeChart chart = ChartFactory.createHistogram(null, null, null, dataset, PlotOrientation.VERTICAL, true, false, false); // chart.getXYPlot().setForegroundAlpha(0.95f); BufferedImage image = chart.createBufferedImage(800, 300); String imageString = ""; try { ByteArrayOutputStream out = new ByteArrayOutputStream(); ImageIO.write(image, "png", out); out.close(); Base64 bencoder = new Base64(); imageString = new String(bencoder.encode(out.toByteArray())); imageString = "data:image/png;base64," + imageString; } catch (IOException e) { sb.append(e); } sb.append("<br><div align=\"center\"><img src=\"").append(imageString); sb.append("\" alt=\"In-degree distribution " + "\" /></div><br>"); sb.append("<div align=\"center\">It took ").append(t1 - t0); sb.append("ms to compute these statistics.<br>"); // refresh form sb.append("<form method=\"get\" name=\"rfrshFrm\" id=\"rfrshFrm\">"); sb.append("<label>Show peers "); sb.append("<input name=\"peers\" type=\"checkbox\" id=\"peers\" />"); // sb.append("checked=\"").append("false").append("\" />"); sb.append("<input type=\"submit\" value=\"Refresh\" />"); sb.append("</form></div>"); if (!showPeers) { return; } sb.append("<h2 align=\"center\" class=\"style2\">"); sb.append("Individual peers:</h2>"); sb.append("<table width=\"1300\" border=\"1\" align=\"center\"><tr>"); sb.append("<th class=\"style2\" width=\"50\" scope=\"col\">Count</th>"); sb.append("<th class=\"style2\" width=\"50\" scope=\"col\">Peer</th>"); sb.append("<th class=\"style2\" width=\"800\" scope=\"col\">Neighbors</th>"); sb.append("<th class=\"style2\" width=\"50\" scope=\"col\">In Degree</th>"); sb.append("<th class=\"style2\" width=\"50\" scope=\"col\">Out Degree</th>"); sb.append("<th class=\"style2\" width=\"100\" scope=\"col\">Cluestering Coefficient</th>"); sb.append("<th class=\"style2\" width=\"50\" scope=\"col\">Age</th>"); sb.append("<th class=\"style2\" width=\"100\" scope=\"col\">Freshness</th></tr>"); int count = 1; for (OverlayAddress address : alivePeers.keySet()) { CyclonNeighbors neighbors = alivePeers.get(address); List<CyclonNodeDescriptor> descriptors = neighbors.getDescriptors(); Collections.sort(descriptors); sb.append("<tr>"); sb.append("<td><div align=\"center\">").append(count++); // sb.append("(").append(g.map.get(address)).append(")"); sb.append("</div></td>"); // print peer address sb.append("</div></td><td bgcolor=\"#99CCFF\"><div align=\"center\">"); appendPeerLink(sb, address); sb.append("</div></td>"); // print neighbors if (descriptors != null) { sb.append("<td><div align=\"left\">"); sb.append("["); Iterator<CyclonNodeDescriptor> iter = descriptors.iterator(); while (iter.hasNext()) { appendPeerLink(sb, iter.next().getCyclonAddress()); if (iter.hasNext()) { sb.append(", "); } } sb.append("]"); } else { sb.append("<td bgcolor=\"#FFCCFF\"><div align=\"left\">"); sb.append("[empty]"); } sb.append("</div></td>"); int v = g.getNodeIndexByAddress(address); // print in-degree sb.append("<td><div align=\"center\">").append(g.getInDegree(v)); sb.append("</div></td>"); // print out-degree sb.append("<td><div align=\"center\">").append(g.getOutDegree(v)); sb.append("</div></td>"); // print clustering coefficient // directedGraph sb.append("<td><div align=\"center\">").append(String.format("%.4f", g.getClustering(v))); sb.append("</div></td>"); long now = System.currentTimeMillis(); OverlayViewEntry viewEntry = view.get(address); // print age sb.append("<td><div align=\"right\">"); sb.append(durationToString(now - viewEntry.getAddedAt())); sb.append("</div></td>"); // print freshness sb.append("<td><div align=\"right\">"); sb.append(durationToString(now - viewEntry.getRefreshedAt())); sb.append("</div></td>"); sb.append("</tr>"); } sb.append("</table>"); }