I want to change the opacity the polygon plots made with this Python Bezier package.
Here is the code I tried:
import bezier
import matplotlib.pyplot as plt
import numpy
plt.clf()
nodes0 = numpy.asfortranarray([[0.0, 1.0, 2.0], [0.0, -1.0, 0.0]])
edge0 = bezier.Curve(nodes0, degree=2)
nodes1 = numpy.asfortranarray([[2.0, 2.0], [0.0, 1.0]])
edge1 = bezier.Curve(nodes1, degree=1)
nodes2 = numpy.asfortranarray([[2.0, 1.0, 0.0], [1.0, 2.0, 1.0]])
edge2 = bezier.Curve(nodes2, degree=2)
nodes3 = numpy.asfortranarray([[0.0, 0.0], [1.0, 0.0]])
edge3 = bezier.Curve(nodes3, degree=1)
curved_poly = bezier.CurvedPolygon(edge0, edge1, edge2, edge3)
# ax.set_alpha(1.0) # <-- I tried this, does not produce any effect.
ax = curved_poly.plot(pts_per_edge=12) # <-- Does not take alpha argument.
# plt.plot(alpha=1) # <-- I tried this, does not produce any effect.
plt.show()
The code produces the following plots:
This library is not well-documented, and apart from the axis and the general color for both line and area, there seems to be nothing that you can pass on to the plot. But we can retrieve the plotted objects (in this case, the plotted Bezier curve consists of a Line2D and a PathPatch object) and modify them:
import bezier
import matplotlib.pyplot as plt
import numpy
from matplotlib.lines import Line2D
from matplotlib.patches import PathPatch
fig, (ax1, ax2) = plt.subplots(2)
nodes0 = numpy.asfortranarray([[0.0, 1.0, 2.0], [0.0, -1.0, 0.0]])
edge0 = bezier.Curve(nodes0, degree=2)
nodes1 = numpy.asfortranarray([[2.0, 2.0], [0.0, 1.0]])
edge1 = bezier.Curve(nodes1, degree=1)
nodes2 = numpy.asfortranarray([[2.0, 1.0, 0.0], [1.0, 2.0, 1.0]])
edge2 = bezier.Curve(nodes2, degree=2)
nodes3 = numpy.asfortranarray([[0.0, 0.0], [1.0, 0.0]])
edge3 = bezier.Curve(nodes3, degree=1)
curved_poly = bezier.CurvedPolygon(edge0, edge1, edge2, edge3)
curved_poly.plot(pts_per_edge=12, color="green", ax=ax1)
for item in ax1.get_children():
if isinstance(item, Line2D):
item.set_color("red")
item.set_alpha(0.7)
if isinstance(item, PathPatch):
item.set_alpha(0.1)
plt.show()