total_explained_variance = sum(pca.explained_variance_ratio_[:2]) * 100 colors = ["#1C3041", "#9B1D20", "#0B6E4F", "#895884", "#F07605", "#F5E400"] pca_2d_df = pd.DataFrame(pca_res[:, :2], columns=["PC1", "PC2"]) pca_2d_df["y"] = data["quality"] fig, ax = plt.subplots() for i, target in enumerate(sorted(pca_2d_df["y"].unique())): subset = pca_2d_df[pca_2d_df["y"] == target] ax.scatter(x=subset["PC1"], y=subset["PC2"], s=70, alpha=0.7, c=colors[i], edgecolors="#000000", label=target) plt.xlabel("Principal Component 1") plt.ylabel("Principal Component 2") plt.title(f"Wine Quality Dataset PCA ({total_explained_variance:.2f}% Explained Variance)", loc="left", fontdict={"weight": "bold"}, y=1.06) ax.legend(title="Wine quality") plt.show()