plotly.py icon indicating copy to clipboard operation
plotly.py copied to clipboard

Fix add hline not working for make_subplot if not populated

Open Erikp15 opened this issue 6 months ago • 2 comments

This is a proposal fix for issue #5136 I first reproduced the issue and created two unit tests, test_add_hline_empty_subplots.py and test_hline_subplots_bug.py, that check if the bug is resolved. Then I implemented the fix (outlined below), which passed both of the new unit tests, and in the process, no old tests were broken.

Root cause

add_shape() is called with exclude_empty_subplots=True. For a fresh make_subplots figure, every subplot is flagged empty, so the h/v line shape is filtered out and never appears, even after traces are later added.

Fix overview

When add_hline/add_vline are invoked and the figure contains no traces (len(self.data)==0), the code now disables the exclude empty subplots logic before delegating to add_shape, allowing the shape to be created and later displayed once data is added.

Code PR

  • [X] I have read through the contributing notes and understand the structure of the package. In particular, if my PR modifies code of plotly.graph_objects, my modifications concern the code generator and not the generated files.
  • [X] I have added tests or modified existing tests.
  • [ ] For a new feature, I have added documentation examples (please see the doc checklist as well).
  • [ ] I have added a CHANGELOG entry if changing anything substantial.
  • [ ] For a new feature or a change in behavior, I have updated the relevant docstrings in the code.

Erikp15 avatar Jun 27 '25 10:06 Erikp15

Hi @gvwilson , just checking in to see if there's anything else needed from my end on this PR. Happy to make any changes if needed.

Erikp15 avatar Jul 12 '25 09:07 Erikp15

Hi @Erikp15, it seems to me that the exclude_empty_subplots argument is working as intended (i.e., it indeed does not draw the hline if the subplot is empty), so I'm not sure we want to change that behavior.

What I would recommend, if you don't want to exclude empty subplots, is to pass exclude_empty_subplots=False to add_hline() — would that work for you?

emilykl avatar Oct 31 '25 14:10 emilykl