Plotly - Box Plot Violin Plot et Contour Plot
Ce chapitre se concentre sur la compréhension détaillée de divers tracés, notamment le box plot, le violon plot, le contour plot et le quiver plot. Dans un premier temps, nous commencerons par le Box Plot qui suit.
Boîte à moustaches
Une boîte à moustaches affiche un résumé d'un ensemble de données contenant le minimum, first quartile, median, third quartile, et maximum. Dans une boîte à moustaches, nous dessinons une boîte du premier quartile au troisième quartile. Une ligne verticale traverse la case à la médiane. Les lignes s'étendant verticalement à partir des cases indiquant la variabilité à l'extérieur des quartiles supérieur et inférieur sont appelées moustaches. Par conséquent, la boîte à moustaches est également connue sous le nom de boîte etwhisker plot. Les moustaches vont de chaque quartile au minimum ou au maximum.
Pour dessiner un graphique en boîte, nous devons utiliser go.Box()fonction. La série de données peut être affectée au paramètre x ou y. En conséquence, la boîte à moustaches sera dessinée horizontalement ou verticalement. Dans l'exemple suivant, les chiffres de vente d'une certaine entreprise dans ses différentes branches sont convertis en boîte à moustaches horizontale. Il montre la médiane de la valeur minimale et maximale.
trace1 = go.Box(y = [1140,1460,489,594,502,508,370,200])
data = [trace1]
fig = go.Figure(data)
iplot(fig)
La sortie de la même chose sera la suivante -
le go.Box()La fonction peut recevoir divers autres paramètres pour contrôler l'apparence et le comportement de la boîte à moustaches. L'un de ces paramètres est le paramètre boxmean.
le boxmeanLe paramètre est défini sur true par défaut. En conséquence, la moyenne de la distribution sous-jacente des boîtes est dessinée sous la forme d'une ligne en pointillés à l'intérieur des boîtes. S'il est défini sur sd, l'écart type de la distribution est également dessiné.
le boxpoints le paramètre est par défaut égal à "outliers". Seuls les points d'échantillonnage situés à l'extérieur des moustaches sont affichés. Si" suspects ", les points aberrants sont affichés et les points inférieurs à 4" Q1-3 "Q3 ou supérieurs à 4" Q3-3 "Q1 sont mis en surbrillance. Si" False ", seules les cases sont affichées sans points d'échantillonnage.
Dans l'exemple suivant, le box trace est dessiné avec l'écart type et les points aberrants.
trc = go.Box(
y = [
0.75, 5.25, 5.5, 6, 6.2, 6.6, 6.80, 7.0, 7.2, 7.5, 7.5, 7.75, 8.15,
8.15, 8.65, 8.93, 9.2, 9.5, 10, 10.25, 11.5, 12, 16, 20.90, 22.3, 23.25
],
boxpoints = 'suspectedoutliers', boxmean = 'sd'
)
data = [trc]
fig = go.Figure(data)
iplot(fig)
La sortie de la même chose est indiquée ci-dessous -
Parcelle de violon
Les graphiques violon sont similaires aux boîtes à moustaches, sauf qu'ils montrent également la densité de probabilité des données à des valeurs différentes. Les graphiques de violon comprendront un marqueur pour la médiane des données et une boîte indiquant l'intervalle interquartile, comme dans les boîtes à moustaches standard. Une estimation de la densité du noyau est superposée à cette boîte à moustaches. Comme les boîtes à moustaches, les graphiques en violon sont utilisés pour représenter la comparaison d'une distribution variable (ou distribution d'échantillons) entre différentes «catégories».
Une intrigue de violon est plus informative qu'une simple boîte à moustaches. En fait, alors qu'une boîte à moustaches ne montre que des statistiques récapitulatives telles que les plages moyenne / médiane et interquartile, le graphique violon montre lefull distribution of the data.
L'objet de trace Violin est renvoyé par go.Violin() fonction dans graph_objectsmodule. Afin d'afficher la boîte à moustaches sous-jacente, leboxplot_visiblel'attribut est défini sur True. De même, en définissantmeanline_visible propriété à true, une ligne correspondant à la moyenne de l'échantillon est affichée à l'intérieur des violons.
L'exemple suivant montre comment le tracé de violon est affiché à l'aide de la fonctionnalité de plotly.
import numpy as np
np.random.seed(10)
c1 = np.random.normal(100, 10, 200)
c2 = np.random.normal(80, 30, 200)
trace1 = go.Violin(y = c1, meanline_visible = True)
trace2 = go.Violin(y = c2, box_visible = True)
data = [trace1, trace2]
fig = go.Figure(data = data)
iplot(fig)
La sortie est la suivante -
Tracé de contour
Un tracé de contour 2D montre les lignes de contour d'un tableau numérique 2D z, c'est-à-dire des lignes interpolées de isovaluesde z. Une ligne de contour d'une fonction de deux variables est une courbe le long de laquelle la fonction a une valeur constante, de sorte que la courbe joint des points de valeur égale.
Un tracé de contour est approprié si vous voulez voir comment une valeur Z change en fonction de deux entrées, X et Y tel que Z = f(X,Y). Une ligne de contour ou isoligne d'une fonction de deux variables est une courbe le long de laquelle la fonction a une valeur constante.
Les variables indépendantes x et y sont généralement limitées à une grille régulière appelée meshgrid. Le numpy.meshgrid crée une grille rectangulaire à partir d'un tableau de valeurs x et d'un tableau de valeurs y.
Commençons par créer des valeurs de données pour x, y et z en utilisant linspace()fonction de la bibliothèque Numpy. Nous créons unmeshgrid à partir des valeurs x et y et obtenir un tableau z constitué de la racine carrée de x2+y2
Nous avons go.Contour() fonction dans graph_objects module qui prend x,y et zles attributs. L'extrait de code suivant affiche le tracé de contour de x,y et z valeurs calculées comme ci-dessus.
import numpy as np
xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
trace = go.Contour(x = xlist, y = ylist, z = Z)
data = [trace]
fig = go.Figure(data)
iplot(fig)
La sortie est la suivante -
Le tracé de contour peut être personnalisé par un ou plusieurs des paramètres suivants -
Transpose (boolean) - Transpose les données z.
Si xtype (ou ytype) est égal à "tableau", les coordonnées x / y sont données par "x" / "y". Si "mis à l'échelle", les coordonnées x sont données par "x0" et "dx".
le connectgaps Le paramètre détermine si les espaces dans les données z sont remplis ou non.
Valeur par défaut de ncontoursle paramètre est 15. Le nombre réel de contours sera choisi automatiquement pour être inférieur ou égal à la valeur de «ncontours». N'a d'effet que si `autocontour` est" True ".
Le type de contour est par défaut: "levels"afin que les données soient représentées sous forme de tracé de contour avec plusieurs niveaux affichés. Si constrain, les données sont représentées sous forme de contraintes avec la région non valide grisée comme spécifié par le operation et value paramètres.
showlines - Détermine si les courbes de niveau sont dessinées ou non.
zauto est True par défaut et détermine si le domaine de couleur est calculé ou non par rapport aux données d'entrée (ici dans `z`) ou aux limites définies dans`zmin`et`zmax`La valeur par défaut est`False`lorsque` zmin` et `zmax` sont définis par l'utilisateur.
Parcelle carquois
Quiver plot est également connu sous le nom de velocity plot. Il affiche les vecteurs de vitesse sous forme de flèches avec des composants (u,v) aux points (x, y). Afin de dessiner l'intrigue Quiver, nous utiliseronscreate_quiver() fonction définie dans figure_factory module dans Plotly.
L'API Python de Plotly contient un module de fabrique de figures qui comprend de nombreuses fonctions d'encapsulation qui créent des types de graphiques uniques qui ne sont pas encore inclus dans plotly.js, La bibliothèque graphique open source de Plotly.
La fonction create_quiver () accepte les paramètres suivants -
x - x coordonnées des emplacements des flèches
y - coordonnées y des emplacements des flèches
u - x composantes des vecteurs flèches
v - y composantes des vecteurs flèches
scale - taille des échelles des flèches
arrow_scale - longueur de la pointe de flèche.
angle - angle de la pointe de la flèche.
Le code suivant rend un tracé de carquois simple dans le notebook Jupyter -
import plotly.figure_factory as ff
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, .2), np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)
# Create quiver figure
fig = ff.create_quiver(x, y, u, v,
scale = .25, arrow_scale = .4,
name = 'quiver', line = dict(width = 1))
iplot(fig)
La sortie du code est la suivante -