Source code for pyleecan.Methods.Machine.Magnet.plot
# -*- coding: utf-8 -*-
from matplotlib.patches import Patch, Polygon
from matplotlib.pyplot import axis, legend
from numpy import array, exp, pi
from ....Functions.init_fig import init_fig
from ....definitions import config_dict
MAGNET_COLOR = config_dict["PLOT"]["COLOR_DICT"]["MAGNET_COLOR"]
[docs]def plot(self, fig=None, display_field=False):
"""Plot the Magnet in a matplotlib fig
Parameters
----------
self : Magnet
A Magnet object
fig :
if None, open a new fig and plot, else add to the current
one (Default value = None)
display_field : bool
if true, will display magnetization field arrow (Default value = False)
Returns
-------
None
"""
surf_list = self.build_geometry()
patches = list()
for surf in surf_list:
patches.extend(surf.get_patches(color=MAGNET_COLOR))
# Display the result
(fig, axes, patch_leg, label_leg) = init_fig(fig)
axes.set_xlabel("(m)")
axes.set_ylabel("(m)")
axes.set_title("Magnet")
# Add the magnet to the fig
for patch in patches:
axes.add_patch(patch)
# Add the field if needed
if display_field:
arrow_list = self.build_magnetization_field(Rbo)
for arrow in arrow_list:
axes.annotate(
"",
xy=(arrow[0].real, arrow[0].imag),
xycoords="data",
xytext=(arrow[1].real, arrow[1].imag),
textcoords="data",
arrowprops=dict(arrowstyle="->", connectionstyle="arc3"),
)
# Axis Setup
axis("equal")
# Legend setup
if "Magnet" not in label_leg:
patch_leg.append(Patch(color=MAGNET_COLOR))
label_leg.append("Magnet")
legend(patch_leg, label_leg)
fig.show()