2016-01-29 22 views
5

seabornボックスプロットをx軸に沿って希望の距離に置くことはできますか?x軸に沿って希望の距離にある海辺のボックス図

私はインデックスの割り当て、マックス、タイプ 生徒の名前の割り当てが文字列であり、より記述現実に

+------------+----------+---------+----------+---------------+ 
| Type  | Homework | Quiz | Homework | Presentations | 
|   | max 100 | max 100 | max 100 | max 100  | 
+------------+----------+---------+----------+---------------+ 
| Assignment | 1  | 2  | 3  | 4    | 
+------------+----------+---------+----------+---------------+ 
| Student 1 | 88  | 98  | 100  | 85   | 
+------------+----------+---------+----------+---------------+ 
| Student 2 | 96  | 79  | 100  | 97   | 
+------------+----------+---------+----------+---------------+ 
| Student 3 | 87  | 79  | 72  | 78   | 
+------------+----------+---------+----------+---------------+ 
| Student 4 | 87  | 84  | 90  | 85   | 
+------------+----------+---------+----------+---------------+ 
| Student 5 | 73  | 91  | 76  | 90   | 
+------------+----------+---------+----------+---------------+ 
| Student 6 | 70  | 75  | 98  | 82   | 
+------------+----------+---------+----------+---------------+ 
| Student 7 | 85  | 71  | 73  | 75   | 
+------------+----------+---------+----------+---------------+ 
| Student 8 | 76  | 81  | 94  | 86   | 
+------------+----------+---------+----------+---------------+ 
| Student 9 | 97  | 80  | 95  | 88   | 
+------------+----------+---------+----------+---------------+ 

の行インデックスと 階層列のインデックスとデータフレームを持っています。

私は簡単にseabornにデータフレームを供給することができ、それは私が本当に欲しいと、ハード(別のサブプロット上に分離されるべき箱のためではない素敵なボックスプロット sns.boxplot(DF)

が生成されます)が、時系列的に正しく配置されている必要があります。もっとはっきり

現在sns.boxplot(df)場所すべてのボックスプロット時系列素敵です。 私はそれの上に、例えば、クイズボックスプロットだけを持っているサブプロットを望みますが、クイズボックスプロットは、すべての割り当てが含まれていた場合に落ちるx軸上に水平に並んでいます。

とにかくx軸に沿って所望の距離に海底ボックスプロットを配置するには

sns.boxplot(df['Quiz'], x=[1,5,9,12]) x '値'を上書きできないため、機能しません(ただし、これはラベルにすぎません)。

答えて

7
import numpy as np 
import pandas as pd 
import seaborn as sns 
df = pd.DataFrame(dict(x=np.repeat([0, 3, 5, 6], 10), 
         y=np.random.randn(40))) 
sns.boxplot(x="x", y="y", data=df, order=np.arange(7)) 

enter image description here

+2

うわー、それは素晴らしいです。 「ワイド」データフレームでそれを行う方法はありますか? –

+1

これは整数位置ではクールですが、浮動小数点位置では実用的ではありません。どのようにそれを達成するための任意の提案? – jlarsch

2

短い答えはであり、であり、seaborn.boxplotは、x軸に沿ってボックスプロットの位置を指定するオプションがありません。

スタイルをあまり気にしない、または手動で指定できる場合は、pandas.DataFrame.boxplotの代わりにpositionsというプロパティを使用できます。

import matplotlib.pyplot as plt 
import pandas as pd 
import numpy.random as rnd # just to generate some data 

data = pd.DataFrame(rnd.randn(10,4)) 
data.boxplot(positions=[1,5,6,10]) 
plt.grid('off') 

boxplot with positions

UPDATE:それは私が、間違っていたユーザーmwaskomが指摘したように、あなたが巧みorderキーワードを使用して位置を指定することができますが、あなたからあなたのデータを再構築する必要があるだろうと思われる、と思われます'ワイド'から 'ロング'フォーマット。

関連する問題