python type_error ai_generated true

TypeError: 'ticks' must be a sequence of numbers or None, got <class 'list'> of strings.

ID: python/matplotlib-colorbar-ticks-error

Also available as: JSON · Markdown · 中文
80%Fix Rate
84%Confidence
0Evidence
2024-07-05First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
3.8 active
3.9 active

Root Cause

Passing string labels directly to the ticks parameter of colorbar(), which expects numeric positions.

generic

中文

向colorbar()的ticks参数直接传递了字符串标签,但该参数需要数字位置。

Workarounds

  1. 95% success Set numeric tick positions and then set tick labels separately
    cbar = plt.colorbar(); cbar.set_ticks([0, 0.5, 1]); cbar.set_ticklabels(['low', 'mid', 'high'])
  2. 90% success Use the format parameter for simple formatting
    cbar = plt.colorbar(ticks=[0, 0.5, 1], format='%.2f')

Dead Ends

Common approaches that don't work:

  1. Using a list of integers but with non-monotonic order 60% fail

    Ticks must be monotonic; non-monotonic values may work but cause visual issues.

  2. Setting tick labels without setting tick positions 80% fail

    The error is about the ticks argument; positions must be numeric.