Source code for pomdp_py.problems.light_dark.env.plotting

"""Plotting utilties"""

import matplotlib.pyplot as plt


[docs] def plot_points( xvals, yvals, color=None, size=1.5, label=None, connected=True, style="--", linewidth=1.5, xlabel="x", ylabel="f(x)", loc="lower right", ): if not connected: plt.scatter(xvals, yvals, s=size, c=color, label=label) else: plt.plot(xvals, yvals, style, linewidth=linewidth, label=label) # plt.axhline(y=0, color='k') # plt.axvline(x=0, color='k') plt.xlabel(xlabel) plt.ylabel(ylabel) plt.legend(loc=loc)
# Plot polygons with colors
[docs] def plot_polygons(verts, colors, ax=None, edgecolor=None): """ `verts` is a sequence of ( verts0, verts1, ...) where verts_i is a sequence of xy tuples of vertices, or an equivalent numpy array of shape (nv, 2). `c` is a sequence of (color0, color1, ...) where color_i is a color, represented by a hex string (7 characters #xxxxxx). Creates a PolygonCollection object in the axis `ax`.""" if ax is None: fig = plt.gcf() ax = fig.add_subplot(1, 1, 1) pc = PolyCollection(verts) pc.set_edgecolor(edgecolor) pc.set_facecolor(colors) ax.add_collection(pc) ax.set_xlabel("X axis") ax.set_ylabel("Y axis")
[docs] def plot_line( ax, p1, p2, linewidth=1, color="black", zorder=0, alpha=1.0, linestyle="-" ): p1x, p1y = p1 p2x, p2y = p2 line = lines.Line2D( [p1x, p2x], [p1y, p2y], linewidth=linewidth, color=color, zorder=zorder, alpha=alpha, linestyle=linestyle, ) ax.add_line(line)
[docs] def plot_circle( ax, center, radius, color="blue", fill=False, zorder=0, linewidth=0, edgecolor=None, label_text=None, alpha=1.0, text_color="white", ): px, py = center circ = plt.Circle( (px, py), radius, facecolor=color, fill=fill, zorder=zorder, linewidth=linewidth, edgecolor=edgecolor, alpha=alpha, ) ax.add_artist(circ) if label_text: text = ax.text( px, py, label_text, color=text_color, ha="center", va="center", size=7, weight="bold", ) text.set_path_effects( [ path_effects.Stroke(linewidth=1, foreground="black"), path_effects.Normal(), ] )