web-dev-qa-db-fra.com

nuage de points dans matplotlib

Ceci est mon premier programme matplotlib, donc désolé pour mon ignorance.

J'ai deux tableaux de chaînes. dire, A = ['test1','test2'] et B = ['test3','test4']. Si une corrélation existe entre l'élément A et B, leur valeur corr sera définie sur 1.

        test1 | test2
test3 |   1   |   0

test4 |   0   |   1

Maintenant, je veux dessiner un diagramme de dispersion où mon axe X sera des éléments de A, l'axe Y sera des éléments de B et si la valeur de corrélation est 1, il sera marqué dans l'intrigue dispersée. comment faire ça?

24
bray

Peut-être quelque chose comme ça:

import matplotlib.pyplot
import pylab

x = [1,2,3,4]
y = [3,4,8,6]

matplotlib.pyplot.scatter(x,y)

matplotlib.pyplot.show()

MODIFIER:

Voyons maintenant si je vous comprends bien:

Tu as:

       test1 | test2 | test3
test3 |   1   |   0  |  1

test4 |   0   |   1  |  0

test5 |   1   |   1  |  0

Maintenant, vous voulez représenter les valeurs ci-dessus dans un nuage de points, de sorte que la valeur de 1 soit représentée par un point.

Supposons que vos résultats soient stockés dans une liste 2D:

results = [[1, 0, 1], [0, 1, 0], [1, 1, 0]]

Nous voulons les transformer en deux variables afin de pouvoir les tracer.

Et je crois que ce code vous donnera ce que vous recherchez:

import matplotlib
import pylab


results = [[1, 0, 1], [0, 1, 0], [1, 1, 0]]

x = []
y = []

for ind_1, sublist in enumerate(results):
    for ind_2, ele in enumerate(sublist):
        if ele == 1:
            x.append(ind_1)
            y.append(ind_2)       


matplotlib.pyplot.scatter(x,y)

matplotlib.pyplot.show()

Notez que j'ai besoin d'importer pylab, et vous auriez dû jouer avec les étiquettes des axes. Cela ressemble aussi à un travail autour, et il pourrait y avoir (probablement) une méthode directe pour le faire.

74
Akavall