Axis labels are not shown for all subplots when using plotly express, facets and string labels
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 18.8k
- Forks
- 2.8k
- Merge médio
- 16h 26min
- PRs com merge (30d)
- 21
Descrição
Problem summary
Whenever I have the following combination:
- plotly express
- facet plots
- labels used for axis are strings
The first subplot shows the axis labels properly, but all following subplots don't show labels at all:

If the axis labels are numbers, there is no problem.
From a comment of the initial issue I opened I now know that fig.update_traces(bingroup='x2', row=1, col=2) can work around the issue, but that's not a permanent solution.
Reproducible example
I originally created these plots in Python (plotly 5.18.0) and then used the .to_json(pretty=True) method to obtain the Javascript for the codepens.
- Manually building up the figure using
graph_objectsandmake_subplotsI get the following working visualization: https://codepen.io/sl1970/pen/BaMvNbp - If I use the convenient
plotly.expresslibrary and thefacetargument I get this broken visualization (no axis labels on the right plot): https://codepen.io/sl1970/pen/jOdXPoa
Original Python code
If necessary, this is the original Python code I used
import pandas as pd
import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objects as go
df = pd.DataFrame(
{
"age": { "0": "Adult", "1": "Adult", "2": "Adult", "3": "Adult", "4": "Adult", "5": "Kid", "6": "Kid", "7": "Kid", "8": "Kid", "9": "Kid", },
"favourite_food": { "0": "Pizza", "1": "Noodles", "2": "Pizza", "3": "Pizza", "4": "Pizza", "5": "Burger", "6": "Pancake", "7": "Noodles", "8": "Pizza", "9": "Pancake", },
"favourite_drink": { "0": "Beer", "1": "Tea", "2": "Beer", "3": "Wine", "4": "Coffee", "5": "Coffee", "6": "Water", "7": "Beer", "8": "Tea", "9": "Wine", },
"max_running_speed": { "0": 4.7362803248, "1": 16.7084927714, "2": 8.1135697835, "3": 1.0704264989, "4": 4.6330187561, "5": 6.331593807, "6": 16.5221040135, "7": 3.2256763127, "8": 4.3084468631, "9": 6.3677742299, },
"number_of_bicycles": { "0": 4, "1": 2, "2": 1, "3": 3, "4": 4, "5": 3, "6": 3, "7": 3, "8": 4, "9": 2, },
}
)
df.set_index("age", inplace=True)
working = make_subplots(rows=1, cols=2, subplot_titles=["Food", "Drink"])
working.add_trace( go.Histogram( histfunc="count", histnorm="percent", x=df.loc["Adult"].favourite_food, name="Adult", legendgroup="Adult", ), row=1, col=1, )
working.add_trace( go.Histogram( histfunc="count", histnorm="percent", x=df.loc["Kid"].favourite_food, name="Kid", legendgroup="Kid" ), row=1, col=1, )
working.add_trace( go.Histogram( histfunc="count", histnorm="percent", x=df.loc["Adult"].favourite_drink, name="Adult", legendgroup="Adult", ), row=1, col=2, )
working.add_trace( go.Histogram( histfunc="count", histnorm="percent", x=df.loc["Kid"].favourite_drink, name="Kid", legendgroup="Kid" ), row=1, col=2, )
working.show()
broken = px.histogram(
df,
x=["favourite_food", "favourite_drink"],
facet_col="variable",
color=df.index,
barmode="group",
histnorm="percent",
text_auto=".2r",
).update_xaxes(matches=None, showticklabels=True).update_yaxes(matches=None, showticklabels=True)
broken.show()
Related
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece com o tratamento de histogramas e facets do plotly.express descrito no exemplo reproduzível em Python e, em seguida, compare a figura gerada com o exemplo funcional de make_subplots e os CodePens vinculados. Considera-se concluído quando os rótulos de eixo categóricos do tipo string forem renderizados em todos os facets sem exigir um workaround de bingroup, com um teste de regressão cobrindo esse caso.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- pandas, python
- Domínio
- data-visualization
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100