def plot_azimuth_ax( bin_width: float, bin_locs: np.ndarray, bin_heights: np.ndarray, bar_color: str, ax: PolarAxes, # type: ignore axial: bool = True, ): """ Plot azimuth rose plot to ax. """ # Rose type always equal-area number_of_azimuths = np.sqrt(bin_heights) # Plot azimuth rose plot ax.bar( np.deg2rad(bin_locs), number_of_azimuths, width=np.deg2rad(bin_width), bottom=0.0, color=bar_color, edgecolor="k", alpha=0.85, zorder=4, ) # Plot setup ax.set_theta_zero_location("N") ax.set_theta_direction(-1) max_theta = 180 if axial else 360 ax.set_thetagrids( np.arange(0, max_theta + 1, 45), fontweight="bold", fontfamily="DejaVu Sans", fontsize=11, alpha=0.95, ) ax.set_thetamin(0) ax.set_thetamax(max_theta) # The average of number_of_azimuths is displayed as a radial grid-line. # TODO: Cannot modify theta lines or r lines _, _ = ax.set_rgrids( radii=(number_of_azimuths.mean(), ), # type: ignore angle=0, fontsize=1, alpha=0.8, fmt="", ha="left", ) # Tick labels labels = ax.get_xticklabels() for label in labels: label._y = -0.03 label._fontproperties._size = 15 label._fontproperties._weight = "bold" if not axial and label == labels[-1]: # Remove tick at 360 degrees label.set(visible=False) return ax
def plot_azimuth_ax( bin_width: float, bin_locs: np.ndarray, bin_heights: np.ndarray, ax: PolarAxes, # type: ignore ): """ Plot azimuth rose plot to ax. """ # Rose type always equal-area number_of_azimuths = np.sqrt(bin_heights) # Plot azimuth rose plot ax.bar( np.deg2rad(bin_locs), number_of_azimuths, width=np.deg2rad(bin_width), bottom=0.0, color="darkgrey", edgecolor="k", alpha=0.85, zorder=4, ) # Plot setup ax.set_theta_zero_location("N") ax.set_theta_direction(-1) ax.set_thetagrids( np.arange(0, 181, 45), fontweight="bold", fontfamily="DejaVu Sans", fontsize=11, alpha=0.95, ) ax.set_thetamin(0) ax.set_thetamax(180) # The average of number_of_azimuths is displayed as a radial grid-line. # TODO: Cannot modify theta lines or r lines _, _ = ax.set_rgrids( radii=(number_of_azimuths.mean(), ), # type: ignore angle=0, fontsize=1, alpha=0.8, fmt="", ha="left", ) # Tick labels labels = ax.get_xticklabels() for label in labels: label._y = -0.03 label._fontproperties._size = 15 label._fontproperties._weight = "bold" return ax