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.