private void initScale(int width) {
   hertz = Settings.getMaxFrequency();
   scale = new double[hertz * hDivBy];
   scaleStr = new String[(hertz * hDivBy) + 1];
   for (int i = 0; i < hertz; i++) {
     for (int j = 0; j < hDivBy; j++) {
       scale[i * hDivBy + j] =
           10.0
               + ((width - settingsPanelWidth) * (i * hDivBy + j + 1)) / (double) (hertz * hDivBy);
       scaleStr[i * hDivBy + j] = (i + j / hDivBy) + "," + (10 / hDivBy) * (j % hDivBy);
     }
   }
   scaleStr[hertz * hDivBy] = hertz + ",0";
 }
 public SpectrumDisplayPanel(RealSpectrum spectrum, SpectrumAnalysis analysis) {
   this();
   height = Display.getHeight();
   width = Display.getWidth();
   xUnit = " Hz";
   hDivBy = 40 / Settings.getMaxFrequency();
   name = "Spectrum";
   initScale(width);
   double max = spectrum.calcMax();
   double min = spectrum.calcMin();
   double signalHeight = max - min;
   double baseline = (height / 2) + (min * (height / 3) / signalHeight) - 70;
   int numnberOfPointsToDraw = spectrum.length();
   points = new Point2D[numnberOfPointsToDraw];
   for (int i = 0; i < numnberOfPointsToDraw; i++) {
     points[i] =
         new Point2D.Double(
             10.0 + ((double) (width - settingsPanelWidth)) * (i / (double) numnberOfPointsToDraw),
             -15 + baseline - (spectrum.getSample(i) * (height / 3) / signalHeight));
   }
   initAnalysisDisplay(spectrum, analysis, width);
   dx = Settings.getMaxFrequency() * (1.0 / (width - settingsPanelWidth));
 }