O MWE abaixo produz um gráfico como este:
Os rótulos das linhas, X
, Y
, Z
, se sobrepõem ao lado direito do gráfico de barras de forma feia. Gostaria que fossem movidos mais para a direita, deixando uma pequena margem entre o gráfico e a tabela. A documentação de matplotlib.pyplot.table não possui nenhuma loc
opção que permita isso. O bbox
argumento pode permitir, mas parece que seria necessário tentar e errar com diferentes caixas delimitadoras para que isso funcionasse.
Existe uma maneira de deixar isso mais claro?
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(9, 5), dpi=300)
ax = sns.barplot(
x = range(1, 3),
y = [15,30],
legend=False,
)
plt.table(cellText=['A','B','C'], rowLabels=['X','Y','Z'], colWidths=[0.15], loc='right')
plt.show()
O truque é dividir sua figura em dois eixos em vez de desenhar a tabela em cima dos eixos das barras;
make_axes_locatable(ax)
+append_axes("right", size="20%", pad=0.2)
esculpe uma faixa estreita e acolchoada à direita,axis("off")
esconde seus traços/espinhas eax_table.table(…)
desenha sua tabela ali para que ela nunca se sobreponha às barras.Isso foi o melhor que consegui dizer:
Saída:
Você pode usar pyplot.subplots para posicionar o gráfico de barras e a tabela um ao lado do outro, com espaço entre eles, adicionando cada um a um eixo.
ps: Reduzi o tamanho da fonte porque elas ultrapassaram a altura da célula no meu código reproduzido.
Você pode usar a opção bbox: