Vorrei creare un elenco di grafici a scatole con il colore della scatola che dipende dal nome della colonna pata.DataFrame che utilizzo come input.Boxplot Seaborn colore basato su Nome colonna DataFrame
I nomi di colonna contengono stringhe che indicano una condizione sperimentale in base alla quale voglio che la casella del boxplot sia colorata.
Lo faccio per fare i grafici a scatole:
sns.boxplot(data = data.dropna(), orient="h")
plt.show()
Questo crea una bella lista dei grafici a scatole con i nomi corretti. Ora voglio dare a ogni boxplot che ha 'prog +, DMSO +' nel suo nome un colore rosso, lasciando il resto come blu.
Ho cercato di creare un dizionario con i nomi di colonna come le chiavi e colori come valori:
color = {}
for column in data.columns:
if 'prog+, DMSO+' in column:
color[column] = 'red'
else:
color[column] = 'blue'
e quindi utilizzando il dizionario come colore:
sns.boxplot(data = data.dropna(), orient="h", color=color[column])
plt.show()
Questo non funziona, comprensibilmente (c'è nessun ciclo per passare attraverso il dizionario). Quindi faccio un ciclo:
for column in data.columns:
sns.boxplot(data = data[column], orient='h', color=color[column])
plt.show()
Questo fa di grafici a scatole di colori diversi ma tutti uno sopra l'altro e senza le etichette corrette. Se potessi in qualche modo mettere questi boxplot bene in una trama l'uno sotto l'altro, sarei quasi in quello che voglio. O c'è un modo migliore?
Bisogna superare il dizionario a 'palette' (colori multipli), senza' color' (uno solo). – mwaskom