2017-08-03 40 views
3

除了發佈在this link上的解決方案之外,我還希望我也可以添加色相參數,並在每個圖中添加中間值。帶中值的標籤盒圖

當前代碼:

testPlot = sns.boxplot(x='Pclass', y='Age', hue='Sex', data=trainData) 
m1 = trainData.groupby(['Pclass', 'Sex'])['Age'].median().values 
mL1 = [str(np.round(s, 2)) for s in m1] 
p1 = range(len(m1)) 

for tick, label in zip(p1, testPlot.get_xticklabels()): 
    print(testPlot.text(p1[tick], m1[tick] + 1, mL1[tick])) 

給出了一個輸出像:enter image description here

我工作泰坦尼克數據集可以在this link找到。

我得到所需的值,但只有當我做一個打印語句時,如何將它包含在我的劇情?

回答

3

將您的標籤手動根據所有xticklabels的週期色調參數,併爲每個類別欄寬度:

import seaborn as sns 
import pandas as pd 
import numpy as np 
import matplotlib.pylab as plt 

trainData = pd.read_csv('titanic.csv') 
testPlot = sns.boxplot(x='pclass', y='age', hue='sex', data=trainData) 
m1 = trainData.groupby(['pclass', 'sex'])['age'].median().values 
mL1 = [str(np.round(s, 2)) for s in m1] 

ind = 0 
for tick in range(len(testPlot.get_xticklabels())): 
    testPlot.text(tick-.2, m1[ind+1]+1, mL1[ind+1], horizontalalignment='center', color='w', weight='semibold') 
    testPlot.text(tick+.2, m1[ind]+1, mL1[ind], horizontalalignment='center', color='w', weight='semibold') 
    ind += 2  
plt.show() 

enter image description here