Я пытаюсь построить разброс со значениями из моего массива, все работает, пока я не пытаюсь масштабировать размер точек со значением моего массива.

Например, мой массив выглядит так:

['50', '50', '0,6352952']

Первое значение - x, второе - y, а третье - то, с чем я хочу масштабироваться.

Мои графики в настоящее время выглядят так:

for i in range(0, len(convertedResults)):
  if convertedResults[i][0] and convertedResults[i][1]:
    plt.scatter(convertedResults[i][0], convertedResults[i][1], s=1*convertedResults[i][2])
plt.show()

Я могу легко построить график без convertResults[i][2], но если я пытаюсь установить размер каждой точки, появляется следующая ошибка:

TypeError: ufunc 'sqrt' не поддерживается для входных типов, и входные данные не могут быть безопасно приведены к каким-либо поддерживаемым типам в соответствии с правилом приведения ''safe''

Я также попытался вручную установить размер s на s = 0,653123123 (например), и это сработало. Так что похоже, что есть проблема с моим массивом. Я не знаю, нужно ли это, но мой массив построен следующим образом:

[['50', '50', '0.6352952'], ['60', '50', '2.8389171199999996'], ['70', '50', '2.8389171199999996'], ['50', '60 ', '0,6352952']]

1
Chopper 19 Ноя 2022 в 11:40

1 ответ

Лучший ответ

Данные в convertedResults имеют тип string, поэтому вы пытаетесь передать строку в s. Даже когда вы умножаете convertedResults[i][2] на 1, результатом также является строка в соответствии со стандартом Python. Вам нужно использовать s = float(convertedResults[i][2]) в вызове scatter

1
Alex P 19 Ноя 2022 в 12:13
Работает как шарм. Спасибо!
 – 
Chopper
19 Ноя 2022 в 12:15