python - seaborn: o compartilhamento do rótulo X não está funcionando como esperado
Estou lidando com um conjunto de dados que mostra relações entre dois pontos, como pontos de ônibus. Por exemplo, temos pontos de ônibus A, B, C e D.
Quero fazer um gráfico de histograma que mostre, para cada ponto de ônibus, quanto tempo leva para chegar aos outros 3 pontos de ônibus.
Obviamente, não há tempo de A a A, portanto, isso deve ficar em branco.
Quando ploto, vejo que a primeira linha mostra B C D, a segunda linha mostra A, C, D, etc. As colunas estão desalinhadas e as cores não representam a mesma coluna em cada linha.
Se eu adicionar sharex = True, ele simplesmente remove os rótulos x em cada eixo. Obviamente, não é isso que eu quero ver aqui.
Em vez disso, gostaria de ver 4 colunas na ordem de A, B, C, D. Quando é de A a A, deve ficar em branco e as cores devem ser consistentes.
Alguém sabe como fazer isso?
import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline
time=np.random.randn(1000)
point1 = ['A','B','C','D'] * 250
point2 = ['A'] * 250 + ['B'] * 250 + ['C'] * 250 + ['D'] * 250
df_time = pd.DataFrame(
{'point1': point1,
'point2': point2,
'time': time
})
df_time=df_time[df_time['point1']!=df_time['point2']] ##cannot sell to another
fig, ax = plt.subplots(nrows=4, sharey=True)
fig.set_size_inches(12, 16)
for point1i, axi in zip(point1, ax.ravel()):
sns.boxplot(data=df_time[df_time['point1']==point1i], x='point2', y='time', ax=axi)