/ Plotagem de Python Scatter com múltiplos valores Y para cada X - python, matplotlib, plot

Gráfico de Dispersão do Python com vários valores Y para cada lote de plotter do X-python, matplotlib

Eu estou tentando usar o Python para criar uma dispersãográfico que contém duas categorias X "cat1" "cat2" e cada categoria tem vários valores Y. Eu posso fazer isso funcionar se o número de valores Y para cada valor X for o mesmo usando este código a seguir:

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

mas assim que o número de valores Y para cada valor X não é o mesmo, recebo um erro. Por exemplo, isso não funciona:

    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

Como posso plotar diferentes números de valores Y paracada valor X e como posso alterar o eixo X de ser os números 1 e 2 para as categorias de texto "cat1" e "cat2". Eu apreciaria muito qualquer ajuda sobre isso!

Aqui está uma imagem de exemplo do tipo de enredo que estou tentando fazer:

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

Respostas:

15 para resposta № 1

Como posso plotar números diferentes de valores Y para cada valor X

Basta traçar cada grupo separadamente:

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

e como posso alterar o eixo X de ser os números 1 e 2 para categorias de texto "cat1" e "cat2".

Defina carrapatos e marque rótulos manualmente:

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

Código completo:

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

insira a descrição da imagem aqui