(self)
| 1496 | self._fig_preview.set_visible(False) |
| 1497 | |
| 1498 | def _show_preview_spectrum_plot(self): |
| 1499 | # Completely redraw the plot each time the function is called |
| 1500 | self.prepare_preview_spectrum_plot() |
| 1501 | |
| 1502 | # Remove all lines from the plot. This is not really needed, since the axes are cleared. |
| 1503 | # while len(self._lines_preview): |
| 1504 | # _ = self._lines_preview.pop() |
| 1505 | # if _.axes is not None: |
| 1506 | # _.remove() |
| 1507 | |
| 1508 | # The list of color names |
| 1509 | color_names = get_color_name() |
| 1510 | |
| 1511 | e_range = self.energy_range_preview |
| 1512 | e_range_supported = (EnergyRangePresets.SELECTED_RANGE, EnergyRangePresets.FULL_SPECTRUM) |
| 1513 | if e_range not in e_range_supported: |
| 1514 | logger.error( |
| 1515 | f"Spectrum preview: Unknown option for the energy range: {e_range}\n" |
| 1516 | "Please report the error to the development team." |
| 1517 | ) |
| 1518 | # This is not a critical error, so we still can proceed |
| 1519 | e_range = EnergyRangePresets.FULL_SPECTRUM |
| 1520 | |
| 1521 | p_type = self.plot_type_preview |
| 1522 | p_type_supported = (PlotTypes.LINLOG, PlotTypes.LINEAR) |
| 1523 | if p_type not in p_type_supported: |
| 1524 | logger.error( |
| 1525 | f"Spectrum preview: Unknown option for the plot type: {p_type}\n" |
| 1526 | "Please report the error to the development team." |
| 1527 | ) |
| 1528 | p_type = PlotTypes.LINEAR |
| 1529 | |
| 1530 | # Maximum number of points in the displayed dataset |
| 1531 | n_dset_points = self._datasets_max_size() |
| 1532 | |
| 1533 | if e_range == EnergyRangePresets.SELECTED_RANGE: |
| 1534 | n_range_low, n_range_high = self.selected_range_indices(n_indexes=n_dset_points) |
| 1535 | else: |
| 1536 | n_range_low, n_range_high = 0, n_dset_points |
| 1537 | |
| 1538 | # All available datasets, we will print only the selected datasets |
| 1539 | dset_names = list(self.io_model.data_sets.keys()) |
| 1540 | |
| 1541 | if p_type == PlotTypes.LINLOG: |
| 1542 | top_margin_coef = 2.0 |
| 1543 | # Minimum for semilog plots may need to be computed, but 1.0 is good |
| 1544 | self.min_v_preview = 1.0 |
| 1545 | self._ax_preview.set_yscale("log") |
| 1546 | else: |
| 1547 | top_margin_coef = 1.05 |
| 1548 | self.min_v_preview = 0.0 # Minimum will always be 0 for linear plots |
| 1549 | |
| 1550 | self.max_v_preview = 1.0 |
| 1551 | self.min_e_preview = 1000.0 # Start with some large number |
| 1552 | self.max_e_preview = 0.1 # Start with some small number |
| 1553 | for n_line, dset_name in enumerate(dset_names): |
| 1554 | dset = self.io_model.data_sets[dset_name] |
| 1555 |
no test coverage detected