Ich versuche, die folgende Handlung aus dem Buch Einführung in die statistische Lernen mit Seaborn mehrere verschiedene Grundstücke in einer Figur mit Seaborn Plotten
ich speziell lmplot
ist dies mit Seaborn neu erstellen möchten, erstellen Sie die ersten beiden Plots zu erstellen und boxplot
um den zweiten zu erstellen. Das Hauptproblem ist, dass lmplot ein facetgrid
entsprechend to this answer erzeugt, das mich zwingt, hackily eine andere matplotlib Achsen für den Boxplot hinzuzufügen. Ich habe mich gefragt, ob es einen einfacheren Weg dafür gibt. Im Folgenden muss ich einige manuelle Manipulationen vornehmen, um die gewünschte Handlung zu erhalten.
seaborn_grid = sns.lmplot('value', 'wage', col='variable', hue='education', data=df_melt, sharex=False)
seaborn_grid.fig.set_figwidth(8)
left, bottom, width, height = seaborn_grid.fig.axes[0]._position.bounds
left2, bottom2, width2, height2 = seaborn_grid.fig.axes[1]._position.bounds
left_diff = left2 - left
seaborn_grid.fig.add_axes((left2 + left_diff, bottom, width, height))
sns.boxplot('education', 'wage', data=df_wage, ax = seaborn_grid.fig.axes[2])
ax2 = seaborn_grid.fig.axes[2]
ax2.set_yticklabels([])
ax2.set_xticklabels(ax2.get_xmajorticklabels(), rotation=30)
ax2.set_ylabel('')
ax2.set_xlabel('');
leg = seaborn_grid.fig.legends[0]
leg.set_bbox_to_anchor([0, .1, 1.5,1])
Beispieldaten für Datenrahmen ergibt:
df_melt = {'education': {0: '1. < HS Grad',
1: '4. College Grad',
2: '3. Some College',
3: '4. College Grad',
4: '2. HS Grad'},
'value': {0: 18, 1: 24, 2: 45, 3: 43, 4: 50},
'variable': {0: 'age', 1: 'age', 2: 'age', 3: 'age', 4: 'age'},
'wage': {0: 75.043154017351497,
1: 70.476019646944508,
2: 130.982177377461,
3: 154.68529299562999,
4: 75.043154017351497}}
df_wage={'education': {0: '1. < HS Grad',
1: '4. College Grad',
2: '3. Some College',
3: '4. College Grad',
4: '2. HS Grad'},
'wage': {0: 75.043154017351497,
1: 70.476019646944508,
2: 130.982177377461,
3: 154.68529299562999,
4: 75.043154017351497}}
Ich glaube, Sie 'PairGrid' verwenden möchten. – mwaskom