def plot_radial_histogram(angles, counts, all_angles=None, include_labels=False, offset=180.0, direction=-1, closed=False, color=STIM_COLOR): if all_angles is None: if len(angles) < 2: all_angles = np.linspace(0, 315, 8) else: all_angles = angles dth = (all_angles[1] - all_angles[0]) * 0.5 if len(counts) == 0: max_count = 1 else: max_count = max(counts) wedges = [] for count, angle in zip(counts, angles): angle = angle*direction + offset wedge = mpatches.Wedge((0,0), count, angle-dth, angle+dth) wedges.append(wedge) wedge_coll = PatchCollection(wedges) wedge_coll.set_facecolor(color) wedge_coll.set_zorder(2) angles_rad = (all_angles*direction + offset)*np.pi/180.0 if closed: border_coll = cplots.radial_circles([max_count]) else: border_coll = cplots.radial_arcs([max_count], min(angles_rad), max(angles_rad)) border_coll.set_facecolor((0,0,0,0)) border_coll.set_zorder(1) line_coll = cplots.angle_lines(angles_rad, 0, max_count) line_coll.set_edgecolor((0,0,0,1)) line_coll.set_linestyle(":") line_coll.set_zorder(1) ax = plt.gca() ax.add_collection(wedge_coll) ax.add_collection(border_coll) ax.add_collection(line_coll) if include_labels: cplots.add_angle_labels(ax, angles_rad, all_angles.astype(int), max_count, (0,0,0,1), offset=max_count*0.1) ax.set(xlim=(-max_count*1.2, max_count*1.2), ylim=(-max_count*1.2, max_count*1.2), aspect=1.0) else: ax.set(xlim=(-max_count*1.05, max_count*1.05), ylim=(-max_count*1.05, max_count*1.05), aspect=1.0)
def test_angle_lines(): lines = cplots.angle_lines([0], 0, 1) assert len(lines.get_paths()) == 1 lines = cplots.angle_lines([0, 1], 0, 1) assert len(lines.get_paths()) == 2
def test_angle_lines(): lines = cplots.angle_lines([0], 0, 1) assert len(lines.get_paths()) == 1 lines = cplots.angle_lines([0,1], 0, 1) assert len(lines.get_paths()) == 2