I created a graph with yellowbrick RadViz:
visualizer = RadViz(classes=labels)
visualizer.fit(X, y)
visualizer.transform(X)
visualizer.show()
As you can see, the legend overrides some of the feature names: Moreover, I want to edit the title. I tried with:
visualizer.ax.set_title("new title")
visualizer.fig.legend(bbox_to_anchor=(1.02, 1), loc=0, borderaxespad=0., title = "level")
But set_title
had no effect. using fig.legend
, a new legend was indeed created but I couldn't remove the original legend.
How can it be done?
You can modify the title of a Yellowbrick plot using the title
parameter, and use the size
parameter to increase the size of the axes, which may help with overlapping labels. Size is specified as a tuple of pixel dimensions:
from yellowbrick.features import RadViz
from yellowbrick.datasets import load_occupancy
X, y = load_occupancy()
visualizer = RadViz(
classes=["occupied", "vacant"],
title="My custom title",
size=(800, 600)
)
visualizer.fit(X, y)
visualizer.transform(X)
visualizer.show()
Alternatively, it is possible to skip the step of adding the Yellowbrick legend and title by circumventing the visualizer's show()
and finalize()
methods, and then directly modifying the ax object using whatever custom legend position you need for your plot:
from yellowbrick.features import RadViz
from yellowbrick.datasets import load_occupancy
X, y = load_occupancy()
visualizer = RadViz()
visualizer.fit(X, y)
visualizer.transform(X)
custom_viz = visualizer.ax
custom_viz.set_title("New title")
custom_viz.figure.legend(
bbox_to_anchor=(1.02, 1),
borderaxespad=0.0,
title="level",
loc=0,
)
custom_viz.figure.show()