Tengo un diagrama de dispersión marítimo ( lmplot ) con más de 10 lmplot puntos. Para percibir todos los datos, funciona mejor cuando el tamaño de la trama es mayor (lo que hace que los marcadores sean relativamente pequeños) y el alfa de los marcadores es bajo. Sin embargo, esto hace que los marcadores de la leyenda sean difíciles de distinguir. ¿Cómo se establece el tamaño del marcador y el marcador alfa en Seaborn?
Veo que g._legend tiene un atributo de tamaño de markersize , pero configurarlo directamente no hace nada.
import numpy as np import pandas as pd import seaborn as sns n_group = 4000 pos = np.concatenate((np.random.randn(n_group,2) + np.array([-1,-1]), np.random.randn(n_group,2) + np.array([0.2, 1.5]), np.random.randn(n_group,2) + np.array([0.6, -1.8]))) df = pd.DataFrame({"x": pos[:,0], "y": pos[:, 1], "label": np.repeat(range(3), n_group)}) g = sns.lmplot("x", "y", df, hue = "label", fit_reg = False, size = 8, scatter_kws = {"alpha": 0.1}) g._legend.set_title("Clusters")Puede hacer esto configurando los valores alfa de los marcadores de leyenda. También puede usar _sizes para establecer los tamaños de marcador en el mismo bucle for:
n_group = 4000 pos = np.concatenate((np.random.randn(n_group,2) + np.array([-1,-1]), np.random.randn(n_group,2) + np.array([0.2, 1.5]), np.random.randn(n_group,2) + np.array([0.6, -1.8]))) df = pd.DataFrame({"x": pos[:,0], "y": pos[:, 1], "label": np.repeat(range(3), n_group)}) g = sns.lmplot("x", "y", df, hue = "label", fit_reg = False, size = 8, scatter_kws = {"alpha": 0.1}) g._legend.set_title("Clusters") for lh in g._legend.legendHandles: lh.set_alpha(1) lh._sizes = [50] # You can also use lh.set_sizes([50])lo anterior no funcionó para mí en un diagrama de línea marino. Esto hizo:
g = sns.lineplot(data=df, x='X', y='Y', hue='HUE', ci=False, style='STYLE', markers=True, ms=16, dashes=False) #get legend and change stuff handles, lables = g.get_legend_handles_labels() for h in handles: h.set_markersize(10) # replace legend using handles and labels from above lgnd = plt.legend(handles, lables, bbox_to_anchor=(1.02, 1), loc='upper left', borderaxespad=0, title='TITLE')