/ / Python Scatter Plot z wieloma wartościami Y dla każdego X - python, matplotlib, działka

Python Scatter Plot z wieloma wartościami Y dla każdego X - python, matplotlib, plot

Próbuję użyć Pythona do stworzenia rozproszeniawykres zawierający dwie kategorie X „cat1” „cat2”, a każda kategoria ma wiele wartości Y. Mogę to uruchomić, jeśli liczba wartości Y dla każdej wartości X jest taka sama, używając następującego kodu:

    import numpy as np
import matplotlib.pyplot as plt

y = [(1,1,2,3),(1,1,2,4)]
x = [1,2]
py.plot(x,y)
plot.show()

ale gdy tylko liczba Y dla każdej wartości X nie jest taka sama, pojawia się błąd. Na przykład to nie działa:

    import numpy as np
import matplotlib.pyplot as plt

y = [(1,1,2,3,9),(1,1,2,4)]
x = [1,2]
plt.plot(x,y)
plot.show()
#note now there are five values for x=1 and only four for x=2. error

Jak mogę wykreślić różne liczby wartości Y dlakażda wartość X i jak mogę zmienić oś X z liczb 1 i 2 na kategorie tekstu „cat1” i „cat2”. Byłbym bardzo wdzięczny za każdą pomoc w tym zakresie!

Oto przykładowy obraz typu fabuły, którą próbuję zrobić:

http://s12.postimg.org/fa417oqt9/pic.png

Odpowiedzi:

15 dla odpowiedzi № 1

Jak mogę wykreślić różne liczby wartości Y dla każdej wartości X

Wystarczy wykreślić każdą grupę osobno:

for xe, ye in zip(x, y):
plt.scatter([xe] * len(ye), ye)

i jak mogę zmienić oś X z liczb 1 i 2 na kategorie tekstu „cat1” i „cat2”.

Ustaw znaczniki i zaznacz etykiety ręcznie:

plt.xticks([1, 2])
plt.axes().set_xticklabels(["cat1", "cat2"])

Pełny kod:

import matplotlib.pyplot as plt
import numpy as np

y = [(1,1,2,3,9),(1,1,2,4)]
x = [1,2]

for xe, ye in zip(x, y):
plt.scatter([xe] * len(ye), ye)

plt.xticks([1, 2])
plt.axes().set_xticklabels(["cat1", "cat2"])

plt.savefig("t.png")

wprowadź opis obrazu tutaj