Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.99 KB | None | 0 0
  1. package main;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Graphics2D;
  8. import java.awt.geom.Rectangle2D;
  9. import java.util.Arrays;
  10. import java.util.Map;
  11. import java.util.TreeMap;
  12.  
  13. import javax.swing.JFrame;
  14. import javax.swing.JPanel;
  15. import javax.swing.JScrollPane;
  16.  
  17. public class Histogram {
  18.  
  19. public long[][] histogramArr;
  20. public int size;
  21. Map<Long, Long> mapHistory;
  22.  
  23. public Histogram(long[] xBounds, long[] yBounds) {
  24. this.size = xBounds.length;
  25. histogramArr = new long[xBounds.length][2];
  26. for (int i = 0; i < xBounds.length; i++) {
  27. histogramArr[i][0] = xBounds[i];
  28. histogramArr[i][1] = yBounds[i];
  29. System.out.println(xBounds[i] + " " + yBounds[i]);
  30. }
  31. }
  32.  
  33. public void drawHistogram() {
  34. mapHistory = new TreeMap<Long, Long>();
  35. for (int c = 0; c < size; c++) {
  36. for (int r = 0; r < histogramArr[c].length; r++) {
  37. long value = histogramArr[c][r];
  38. long amount = 0;
  39. if (mapHistory.containsKey(value)) {
  40. amount = mapHistory.get(value);
  41. amount++;
  42. } else {
  43. amount = 1;
  44. }
  45. mapHistory.put(value, amount);
  46. }
  47. }
  48. JFrame frame = new JFrame("Test");
  49. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50. frame.setLayout(new BorderLayout());
  51. frame.add(new JScrollPane(new Graph(mapHistory)));
  52. frame.pack();
  53. frame.setLocationRelativeTo(null);
  54. frame.setVisible(true);
  55. }
  56.  
  57. protected class Graph extends JPanel {
  58.  
  59. protected static final int MIN_BAR_WIDTH = 4;
  60. private Map<Long, Long> mapHistory;
  61.  
  62. public Graph(Map<Long, Long> mapHistory) {
  63. this.mapHistory = mapHistory;
  64. int width = (mapHistory.size() * MIN_BAR_WIDTH) + 11;
  65. Dimension minSize = new Dimension(width, 128);
  66. Dimension prefSize = new Dimension(width, 256);
  67. setMinimumSize(minSize);
  68. setPreferredSize(prefSize);
  69. }
  70.  
  71. @Override
  72. protected void paintComponent(Graphics g) {
  73. super.paintComponent(g);
  74. if (mapHistory != null) {
  75. int xOffset = 5;
  76. int yOffset = 5;
  77. int width = getWidth() - 1 - (xOffset * 2);
  78. int height = getHeight() - 1 - (yOffset * 2);
  79. Graphics2D g2d = (Graphics2D) g.create();
  80. g2d.setColor(Color.DARK_GRAY);
  81. g2d.drawRect(xOffset, yOffset, width, height);
  82. int barWidth = Math.max(MIN_BAR_WIDTH,
  83. (int) Math.floor((float) width
  84. / (float) mapHistory.size()));
  85. System.out.println("width = " + width + "; size = "
  86. + mapHistory.size() + "; barWidth = " + barWidth);
  87. long maxValue = 0;
  88. for (Long key : mapHistory.keySet()) {
  89. long value = mapHistory.get(key);
  90. maxValue = Math.max(maxValue, value);
  91. }
  92. int xPos = xOffset;
  93. for (Long key : mapHistory.keySet()) {
  94. long value = mapHistory.get(key);
  95. int barHeight = Math.round(((float) value
  96. / (float) maxValue) * height);
  97. g2d.setColor(Color.BLUE);
  98. int yPos = height + yOffset - barHeight;
  99. //Rectangle bar = new Rectangle(xPos, yPos, barWidth, barHeight);
  100. Rectangle2D bar = new Rectangle2D.Float(
  101. xPos, yPos, barWidth, barHeight);
  102. g2d.fill(bar);
  103. g2d.setColor(Color.DARK_GRAY);
  104. g2d.draw(bar);
  105. xPos += barWidth;
  106. }
  107. g2d.dispose();
  108. }
  109. }
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement