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 № 1Como 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")