2016-03-01 4 views
14

Я пытаюсь создать рассеянную диаграмму. У меня есть список чисел от 0 до 17, а также массив с 18 значениями. Я могу построить данные как линейный график, но когда я пытаюсь построить как разброс, я получаю сообщение об ошибке, которое я не понимаю: TypeError: ufunc 'sqrt' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''Matplotlib разброс участка с неизвестной ошибкой

Что означает это сообщение об ошибке и как я могу получить данные для построения в виде разбрасывать?

import numpy as np 
import matplotlib.pyplot as plt 

y = [7316.0, 7453.25, 7518.25, 7711.5, 7448.0, 7210.25, 7416.75, 6960.75, 
    7397.75, 6397.5, 5522.75, 5139.0, 5034.75, 4264.75, 5106.0, 3489.5, 
    4712.0, 4770.0] 
x = np.arange(0,18,1) 

plt.rcParams['legend.loc'] = 'best' 
plt.figure(1) 
plt.xlim(0, 20) 
plt.ylim(0, 10000) 
plt.scatter(x, y, 'r') 
plt.show() 

ответ

31

Проверьте scatter documentation. Третий аргумент - размер точек и должен быть скалярным или массивным. Я предполагаю, что 'r' предназначен для цвета, поэтому выполните следующие действия:

plt.scatter(x, y, c='r') 
+1

Спасибо, что это имеет смысл сейчас. Я читал его, но не пропускал часть c =, поскольку это не нужно в обычных сюжетах. Кажется глупым иметь различный синтаксис между двумя стилями. –

Смежные вопросы