You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bar chart: textposition='auto' not working for 0 values #6474
"auto" tries to position text inside the bar, but if the bar is too small and no bar is stacked on this one the text is moved outside.
For small values this is working nicely: Instead of inside, the text gets positioned outside.
But: For 0 values, the text disappears completely instead of being moved outside.
import pandas as pd
import plotly.express as px
df = pd.DataFrame({
"Country": [f"Country {n}" for n in range(6)],
"Some Metric": [8,5,5,.5,0.0001,0]
})
fig = px.bar(
df,
x='Some Metric',
y='Country',
text='Country',
orientation='h')
fig.update_yaxes(visible=False, showticklabels=False)
# change here between "auto" (default), "inside", "outisde"
fig.update_traces(textposition="auto")
fig.show()
Setting 0 values to a small value is a dirty fix that may also lead to the text disappearing when the graph is resized. At the same time, such a fix endangers data integrity.
The alternative would be setting the textposition for every observation separately. I think that should be avoided and covered by setting texposition="auto".
Fix that everybody can implement in their code currently:
fig.update_traces(textposition=['outside' if val==0 else 'auto' for val in df['Some Metric']])
Does look like a bug to me, and certainly a zero-size bar is different from no bar! Nice detective work @AaronStiff - fixing this may be as simple as removing that textPosition === 'auto' || line (and adding this situation to a test image) but it would be good to at least investigate why that condition was added in the first place...
Thanks @alexcjohnson! Unfortunately I'm not really setup for/knowledgeable in plotly.js development yet, so I'll let someone else make that change. But the git blame seems like it's been around for several years.
Activity
AaronStiff commentedon Feb 8, 2023
Duplicate of plotly/plotly.py#2709
AaronStiff commentedon Feb 8, 2023
@archmoj is this by design? I noticed this in
bar/plot.js:plotly.js/src/traces/bar/plot.js
Lines 301 to 307 in 70c49ce
alexcjohnson commentedon Feb 9, 2023
Does look like a bug to me, and certainly a zero-size bar is different from no bar! Nice detective work @AaronStiff - fixing this may be as simple as removing that
textPosition === 'auto' ||line (and adding this situation to a test image) but it would be good to at least investigate why that condition was added in the first place...AaronStiff commentedon Feb 9, 2023
Thanks @alexcjohnson! Unfortunately I'm not really setup for/knowledgeable in plotly.js development yet, so I'll let someone else make that change. But the git blame seems like it's been around for several years.
JosieAilsa commentedon Aug 8, 2023
Also in the same position of having to conside that same dirty fix for 0 values! 🙏
textpositionis set toauto#6544 as a duplicate of this issueemilykl commentedon Aug 28, 2026
Codepen from duplicate issue #6544: https://codepen.io/bleah1/pen/dyqLmvN
emilykl commentedon Sep 1, 2026
Equivalent plotly.py issue: plotly/plotly.py#4686