for i, data in enumerate(datas): levels = measure.contour_levels(data["rms"], data["data"].max(), base = data["base"], step=math.sqrt(2)) axs[1].contour( np.arange(data["left"], data["right"], data["scale"]), np.arange(data["top"], data["bottom"], data["scale"]), data["data"], levels = levels, colors=colors[i] ) axs[1].set_xlim(-20, 20) axs[1].set_ylim(-20, 20) axs[1].set_aspect("equal") axs[1].set_xlabel("x1 (mas)") axs[1].set_ylabel("x2 (mas)") axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.min(PA_Asadi), np.max(PA_Asadi), 10., True, '#bdbdbd') axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.mean(PA_obs_Asadi) - np.std(PA_obs_Asadi), np.mean(PA_obs_Asadi) + np.std(PA_obs_Asadi), 10., True, 'y') axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.mean(PA_obs_Rusin) - np.std(PA_obs_Rusin), np.mean(PA_obs_Rusin) + np.std(PA_obs_Rusin), 10., True, 'r') leg = axs[-1].legend(lines, labels) for legobj in leg.legendHandles: legobj.set_linewidth(3.0) for ax in axs:
axs[0], axs[1], xA_a, xB_a, yA_a, yB_a = func.pred_pos( axs[0], axs[1], dataset, colors[i], xA_a, yA_a, xB_a, yB_a, plot=False ) core_pos = (xB[0], yB[0]) # core_pos = (0.0, 0.0) # for PA in PA_obs: # axs[1] = func.plot_PA_line(axs[1], core_pos, PA, 30.0) # for PA in PA_Asadi: # axs[1] = func.plot_PA_line(axs[1], core_pos, PA, 30.0, '-k') # for PA in PA_Rusin: # axs[1] = func.plot_PA_line(axs[1], core_pos, PA, 30.0, '-b') # axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.min(PA_obs), np.max(PA_obs), 30., True, 'b') # axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.min(PA_Rusin), np.max(PA_Rusin), 30., True, 'c') axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.min(PA_Asadi), np.max(PA_Asadi), 30.0, True, "#bdbdbd") axs[0].set_xlim(-80, 20) axs[0].set_ylim(-30, 30) axs[1].set_xlim(-40, 20) axs[1].set_ylim(-30, 30) axs[0].set_aspect("equal") axs[1].set_aspect("equal") xticks0 = axs[0].get_xticks() yticks0 = axs[0].get_yticks() xlabels0 = np.round(xticks0 * evn38.pixel_scale * 3600e3, 1) ylabels0 = np.round(yticks0 * evn38.pixel_scale * 3600e3, 1) axs[0].set_xticklabels(xlabels0) axs[0].set_yticklabels(ylabels0)
# Plot predicted position angles # core_pos = (0.0, 0.0) # axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.min(PA_Asadi), np.max(PA_Asadi), 10., True, '#bdbdbd') axs[1].set_xlim(-30, 10) axs[1].set_ylim(-10, 10) axs[1].set_aspect("equal") axs[1].set_xlabel("x1 (mas)") axs[1].set_ylabel("x2 (mas)") # pas = func.draw_straight_line(axs[0], 'y', -(imAxmas - imAxmas[0]), imAymas - imAymas[0]) # pbs = func.draw_straight_line(axs[1], 'y', -(imBxmas - imBxmas[0]), imBymas - imBymas[0]) # pac = func.draw_curved_line(axs[0], 'r', -(imAxmas - imAxmas[0]), imAymas - imAymas[0]) # pbc = func.draw_curved_line(axs[1], 'r', -(imBxmas - imBxmas[0]), imBymas - imBymas[0]) #axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.min(PA_Asadi), np.max(PA_Asadi), 10., True, '#bdbdbd') axs[1] = func.plot_PA_wedge(axs[1], core_pos, np.min(PAs), np.max(PAs), 10., True, '#bdbdbd') for ax in axs: xticks = ax.get_xticks() xlabels = [-int(i) for i in xticks] ax.set_xticklabels(xlabels) legend1 = plt.legend(lines, labels, loc='upper left', frameon=False) for legobj in legend1.legendHandles: legobj.set_linewidth(3.0) axs[1] = plt.gca().add_artist(legend1) plt.legend([constraint_line, match_line, free_line], ["constraints", "${\it match}$ model", "${\it free}$ model"], loc='center left', scatterpoints=1, frameon=False) plt.savefig("../figs/overplot_sims.png")