code: def _get_plot_data(self):
          
          _marker_type = self.settings.get('markerstyle', 'o')
  
          if self.x_col == self._idxname:
              x_data = self._idx
          else:
              x_data = self.tab[self.x_col].data
  
          if self.y_col == self._idxname:
              y_data = self._idx
          else:
              y_data = self.tab[self.y_col].data
  
          if self.tab.masked:
              if self.x_col == self._idxname:
                  x_mask = np.ones_like(self._idx, dtype=np.bool)
              else:
                  x_mask = ~self.tab[self.x_col].mask
  
              if self.y_col == self._idxname:
                  y_mask = np.ones_like(self._idx, dtype=np.bool)
              else:
                  y_mask = ~self.tab[self.y_col].mask
  
              mask = x_mask & y_mask
              x_data = x_data[mask]
              y_data = y_data[mask]
  
          if len(x_data) > 1:
              i = np.argsort(x_data)  # Sort X-axis to avoid messy line plot
              x_data = x_data[i]
              y_data = y_data[i]
  
              if not self.w.show_marker.get_state():
                  _marker_type = None
  
          return x_data, y_data, _marker_type
docs: Extract only good data point for plotting.