Я пытаюсь построить разброс со значениями из моего массива, все работает, пока я не пытаюсь масштабировать размер точек со значением моего массива.
Например, мой массив выглядит так:
['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 ответ
Данные в convertedResults
имеют тип string, поэтому вы пытаетесь передать строку в s
. Даже когда вы умножаете convertedResults[i][2]
на 1, результатом также является строка в соответствии со стандартом Python. Вам нужно использовать s = float(convertedResults[i][2])
в вызове scatter
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.