2017-09-14 2 views
1

Existe-t-il un moyen de changer le style de ligne des moustaches des boîtes à moustaches pandas en '-'? La valeur par défaut semble être '-'.Comment changer le style linéaire des moustaches dans les boxplots pandas?

J'ai essayé:

color = dict(boxes='black', whiskers='black', medians='red', caps='black') 
styles=dict(whiskers='-') 
bp = df.plot.box(color=color, style=styles) 

Cependant, alors que les couleurs se révèlent la façon dont je veux, l'entrée de style ne semble pas affecter la parcelle du tout.

Here is an example. I always get dashed lines for my whiskers, but would like solid lines.

J'ai aussi essayé

boxprops = dict(linewidth=1.0, color='black') 
whiskerprops = dict(linestyle='-',linewidth=1.0, color='black') 
plt.figure() 
df.boxplot(boxprops=boxprops, whiskerprops=whiskerprops) 

Ici, df.boxplot ne prend pas les entrées du tout.

Ceci est étroitement lié à Pandas boxplot: set color and properties for box, median, mean

+0

La valeur par défaut est '-'. Votre code fonctionne pour moi. Que voulez-vous exactement que le style soit? –

+0

Donc vous n'obtenez pas de lignes pointillées pour vos moustaches ?! –

+0

Non. Je reçois des lignes pointillées quand j'utilise 'linestyle = '-'' –

Répondre

3

Ted Petrou commments a aidé:

Mettre le whiskerprops = dict() directement dans la ligne de df.plot.box:

color = dict(boxes='black', whiskers='black', medians='red', caps='black') 
bp = df.plot.box(color=color,whiskerprops = dict(linestyle='-',linewidth=1.0 
, color='black')) 

En ce qui concerne df.boxplot(), il semble y avoir un problème avec by arguments. Y compris les whiskerprops et les boxprops directement dans l'argument, ici, aidé aussi bien. Cependant, je ne pouvais toujours pas changer la couleur des boîtes! Il reste à être le bleu par défaut. Le code suivant donne des moustaches noires, mais les boîtes sont bleues. La largeur de ligne des boîtes peut être changée tho!

plt.figure() 
df.boxplot(boxprops= dict(linewidth=1.0, color='black') 
, whiskerprops=dict(linestyle='-',linewidth=1.0, color='black')) 

Si quelqu'un peut aider, s'il vous plaît faire un commentaire en modifiant les couleurs des boîtes à df.boxplot(). D'après la documentation sur les pandas, les gens devraient plutôt utiliser df.plot.box de toute façon.

0

Je n'ai pas ici, mais il Pandas utilise matplotlib. pyplot.boxplot rendements

Un dictionnaire de cartographie chaque composant de la boîte à moustaches de la liste des instances créées matplotlib.lines.Line2D.

Un ensemble de lignes est pour les whiskers. Vous pouvez définir linestyle property pour chaque moustache en y accédant via le dictionnaire.

from pprint import pprint 
import matplotlib.pyplot as plt 

data = [[1, 2, 3, 4, 5], [2, 3, 4], [1, 1.2, 1.4, 1.8]] 
a = plt.boxplot(data) 
pprint(a) 
for whisker in a['whiskers']: 
    whisker.set_linestyle('-.') 
    print(whisker.get_linestyle()) 
plt.show() 
plt.close() 

disponibles sont présentés styles de ligne dans cet exemple line_styles_reference.

+0

merci. Fait intéressant, changer les styles de 'plt.boxplot()' n'a posé aucun problème. Cependant, en utilisant des pandas, df.boxplot() n'a pas pris les arguments by. Je pourrais essayer votre chemin et vous laisser savoir comment ça se passe! –