apache / echarts

Apache ECharts is a powerful, interactive charting and data visualization library for browser
https://echarts.apache.org
Apache License 2.0
60.49k stars 19.62k forks source link

[Bug] Toggling `label.show` does not behave correctly when hovering over a bar in the barChart #20282

Open robin-gerling opened 2 months ago

robin-gerling commented 2 months ago

Version

5.5.1

Link to Minimal Reproduction

https://codepen.io/robin-gerling/pen/abgYVLZ

Steps to Reproduce

  1. Initialization: Simple option containing only data for the bar chart and label.show = true for the series
  2. Update the option with chart.setOption(option); (by clicking on "Toggle bar values" in the minimal reproduction)
  3. Hover over the bars

Current Behavior

The label for a bar appears when hovering over the bar even though label.show is false. In case the initial value for label.show is true and the option is changed to true, the label for a bar will hide when hovering over the bar.

Expected Behavior

When label.show = false the labels should be not shown at any time (and not appear on hover). When label.show = true the labels should be shown at any time (and not disappear on hover).

Environment

- OS:
- Browser:
- Framework:

Any additional comments?

Could be related to https://github.com/apache/echarts/issues/17554. However, https://github.com/apache/echarts/issues/17554, additionally sets labelLayout.hideOverlap.

The minimal reproduction contains two buttons. Pressing "Clear chart & Toggle bar values" additionally clears the chart (chart.clear();). Clearing helps resolving this bug.

helgasoft commented 2 months ago

The label for a bar appears when hovering over the bar even though label.show is false.

this effect comes from emphasis.label.show Labels and emphasis switch fine - Demo 📌 please close issue if problem solved.

robin-gerling commented 2 months ago

Thank you for the quick answer. This solves the problem. But, I would argue that this is a workaround, as is clearing the chart, because when the chart is initialized, emphasis.label.show takes the value of label.show. I would therefore expect the same when changing label.show and keep the issue open (except it is confirmed that setting emphasis.label.show is expected wanted behaviour). However, setting emphasis.label.show is a much better workaround than having to clear the chart.