Source code for attribench.plot._krippendorff_alpha_plot

import pandas as pd
from krippendorff import krippendorff
from scipy.stats import rankdata
import matplotlib.pyplot as plt
from attribench.plot import Plot
from matplotlib.figure import Figure


[docs]class KrippendorffAlphaPlot(Plot): """Bar plot of Krippendorff's alpha for each metric."""
[docs] def render( self, title: str | None = None, figsize=(10, 10), fontsize=20 ) -> Figure: """Render the plot. Parameters ---------- title : str | None, optional Title of the figure, by default None figsize : tuple, optional Size of the figure, by default (10, 10) fontsize : int, optional Font size of x and y axis ticks, by default 20 Returns ------- Figure Rendered Matplotlib figure. """ k_a = { metric_name: krippendorff.alpha( rankdata(df.to_numpy(), axis=1), level_of_measurement="ordinal" ) for metric_name, (df, _) in self.dfs.items() } k_a = pd.DataFrame(k_a, index=["Krippendorff Alpha"]).transpose() fig, ax = plt.subplots() plt.xticks(fontsize=fontsize) plt.yticks(fontsize=fontsize) k_a.plot.barh(figsize=figsize, ax=ax) if title is not None: ax.set_title(title) fig.tight_layout() return fig