2016-03-01 10 views
14

Próbuję utworzyć wykres rozproszenia. Mam listę liczb od 0 do 17 oraz tablicę z 18 wartościami. Mogę drukować dane jako wykres liniowy, ale gdy próbuję drukować jako rozproszenie, pojawia się komunikat o błędzie, którego nie rozumiem: 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''Działka rozproszenia Matplotlib z nieznanym błędem

Co oznacza ten komunikat o błędzie i jak mogę uzyskać dane do wydrukowania jako rozpraszać?

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() 

Odpowiedz

31

Sprawdź scatter documentation. Trzeci argument dotyczy rozmiaru punktów i powinien być skalarny lub podobny do tablicy. Zakładam, że 'r' jest dla koloru, więc wykonaj następujące czynności:

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

Dziękuję, że to ma teraz sens. Czytałem to, ale pomijając c = część, ponieważ jest niepotrzebne w normalnych działkach. Wydaje się głupim mieć różne składni między tymi dwoma stylami. –

Powiązane problemy