2015-06-13 28 views
7

Ecco il mio codiceCome etichettare e modificare la scala degli assi di Seaborn kdeplot

import numpy as np 
from numpy.random import randn 
import pandas as pd 
from scipy import stats 
import matplotlib as mpl 
import matplotlib.pyplot as plt 
import seaborn as sns 


fig = sns.kdeplot(treze, shade=True, color=c1,cut =0, clip=(0,2000)) 
fig = sns.kdeplot(cjjardim, shade=True, color=c2,cut =0, clip=(0,2000)) 

fig.figure.suptitle("Plot", fontsize = 24) 

plt.xlabel('Purchase amount', fontsize=18) 
plt.ylabel('Distribution', fontsize=16) 

, che si traduce nel seguente grafico:

enter image description here

voglio fare due cose:

1) Modificare la scala dell'asse y moltiplicando i suoi valori per 10000 e, se possibile, aggiungere un segno% ai numeri. In altre parole, voglio che i valori dell'asse y mostrati nel grafico sopra siano 0%, 5%, 10%, 15%, 20%, 25% e 30%.

2) Aggiungere altri valori all'asse x. Sono particolarmente interessato a mostrare i dati in intervalli di 200. In altre parole, voglio che i valori dell'asse x mostrati nel grafico siano 0, 200, 400, 600, ... e così via.

+0

Volete solo un istogramma delle frequenze? Voglio dire, ha poco senso usare una stima della densità e poi moltiplicare per una costante e discretizzarla. – cel

+0

Forse? Penso che un istogramma potrebbe essere un'alternativa per mostrare le differenze tra quelle distribuzioni, ma penso che una trama della densità del kernel sia più efficace per il mio scopo. – iatowks

+1

Questo è solo un asse matplotlib in modo da poter cambiare le etichette degli assi nello stesso modo in cui si farebbe con un normale trama matplotlib. Tuttavia, sembri un po 'confuso su ciò che rappresenta l'asse y. Perché vuoi moltiplicarlo per 10000 e aggiungere una percentuale? Questo non sarà accurato. – mwaskom

risposta

9

1) quello che stai cercando è molto probabilmente una combinazione di get_yticks() e set_yticks:

plt.yticks(fig.get_yticks(), fig.get_yticks() * 100) 
plt.ylabel('Distribution [%]', fontsize=16) 

Nota: come mwaskom è volte commentando 10000 e un segno% è matematicamente corretto.

2) è possibile specificare dove si desidera utilizzare i segni di spunta tramite la funzione xticks. Poi hai più tick e i dati diventano più facili da leggere. Non ottieni più dati in questo modo.

plt.xticks([0, 200, 400, 600]) 
plt.xlabel('Purchase amount', fontsize=18) 

Nota: se si voleva limitare la visualizzazione ai valori x specificati si potrebbe anche avere uno sguardo a plt.xlim() e di ridurre la cifra alla gamma interessante.

+0

Esattamente quello di cui avevo bisogno, grazie. – iatowks

+0

siete i benvenuti – cattt84

Problemi correlati