Spaces:
Sleeping
Sleeping
# =================== | |
# Part 1: Importing Libraries | |
# =================== | |
import matplotlib.pyplot as plt | |
# =================== | |
# Part 2: Data Preparation | |
# =================== | |
# Data for the plots | |
models = ["GRU4Rec", "Caser", "SASRec", "BERT4Rec", "FMLP-Rec"] | |
beauty_values = [14.3, 19.9, 2.4, 11.2, 2.2] | |
movielens_values = [3.1, 2.9, 4.1, 5.1, 3.0] | |
yelp_values = [19.7, -0.5, -0.5, 4.8, -0.7] | |
title1 = "Beauty" | |
axvline1 = 0 | |
title2 = "MovieLens-1M" | |
axvline2 = 0 | |
title3 = "Yelp" | |
axvline3 = 0 | |
xticks1 = [0, 2.5, 5] | |
xticks2 = [0, 2.5, 5] | |
xticks3 = [0, 10, 20] | |
xlable = "▲%" | |
# =================== | |
# Part 3: Plot Configuration and Rendering | |
# =================== | |
# Set the figure size to match the original image's dimensions | |
fig, axes = plt.subplots(1, 3, figsize=(10, 4)) | |
# Plot for Beauty | |
axes[0].barh(models, beauty_values, color="white", edgecolor="black") | |
axes[0].set_title(title1) | |
for i, v in enumerate(beauty_values): | |
axes[0].text( | |
v - 0.5 if v < 0 else v + 0.5, | |
i, | |
f"{v}%", | |
color="black", | |
va="center", | |
ha="right" if v < 0 else "left", | |
) | |
axes[0].axvline(axvline1, color="black") | |
# Plot for MovieLens-1M | |
axes[1].barh(models, movielens_values, color="white", edgecolor="black") | |
axes[1].set_title(title2) | |
for i, v in enumerate(movielens_values): | |
axes[1].text( | |
v - 0.2 if v < 0 else v + 0.2, | |
i, | |
f"{v}%", | |
color="black" if v > 0 else "red", | |
va="center", | |
ha="right" if v < 0 else "left", | |
) | |
axes[1].axvline(axvline2, color="black") | |
axes[1].set_xticks(xticks1) | |
# Plot for Yelp | |
axes[2].barh(models, yelp_values, color="white", edgecolor="black") | |
axes[2].set_title(title3) | |
for i, v in enumerate(yelp_values): | |
axes[2].text( | |
v - 0.5 if v < 0 else v + 0.5, | |
i, | |
f"{v}%", | |
color="black" if v > 0 else "red", | |
va="center", | |
ha="right" if v < 0 else "left", | |
) | |
axes[2].axvline(axvline3, color="black") | |
axes[2].set_xticks(xticks2) | |
# Hide all axes except the bottom one | |
for ax in axes: | |
for spine in ["left", "right", "top"]: | |
ax.spines[spine].set_visible(False) | |
# Hide y-axis labels for axes[1] and axes[2] | |
axes[1].set_yticks([]) | |
axes[1].set_yticklabels([]) | |
axes[2].set_yticks([]) | |
axes[2].set_yticklabels([]) | |
# Add x-axis label for all axes | |
for ax in axes: | |
ax.set_xlabel(xlable) | |
plt.subplots_adjust(wspace=0.5) | |
# =================== | |
# Part 4: Saving Output | |
# =================== | |
plt.tight_layout() | |
plt.savefig("bar_12.pdf", bbox_inches="tight") | |