def make_figure_dist_by_mag(extractors, what): """ $ oq plot "dist_by_mag?" """ # NB: matplotlib is imported inside since it is a costly import import matplotlib.pyplot as plt [ex] = extractors effect = ex.get('effect') mags = ['%.2f' % mag for mag in effect.mags] fig, ax = plt.subplots() trti = 0 for trt, dists in effect.dist_bins.items(): dic = dict(zip(mags, effect[:, :, trti])) if ex.oqparam.pointsource_distance: pdist = getdefault(ex.oqparam.pointsource_distance, trt) else: pdist = None eff = Effect(dic, dists, pdist) dist_by_mag = eff.dist_by_mag() ax.plot(effect.mags, list(dist_by_mag.values()), label=trt, color='red') if pdist: dist_by_mag = eff.dist_by_mag(eff.collapse_value) ax.plot(effect.mags, list(dist_by_mag.values()), label=trt, color='green') ax.set_xlabel('Mag') ax.set_ylabel('Dist') ax.set_title('Integration Distance at intensity=%s' % eff.zero_value) trti += 1 ax.legend() return plt
def test_dist_by_mag(self): effect = Effect(intensities, dists) dist = list(effect.dist_by_mag(0).values()) numpy.testing.assert_allclose(dist, [50, 50, 50, 50]) dist = list(effect.dist_by_mag(.9).values()) numpy.testing.assert_allclose(dist, [12, 15, 19.677419, 20]) dist = list(effect.dist_by_mag(1.1).values()) numpy.testing.assert_allclose(dist, [0, 10, 13.225806, 16.666667])