Matplotlib - terrain avec une couleur différente pour certains points de données
Ma question est similaire à cette question. Je suis traçage latitude vs longitude. Si la valeur d'une variable est à 0, je veux que la lat/long de la valeur à être marqués avec une couleur différente. Comment dois-je faire?
C'est ma tentative à ce jour. Ici x est titulaire de la latitude et y détient longitude. timeDiff est une liste de portefeuille de valeurs float et si la valeur est de 0,0, je veux que la couleur différent.
Depuis, matplotlib plaint qu'il ne peut pas utiliser des flotteurs, j'ai d'abord converti les valeurs de type int.
timeDiffInt=[int(i) for i in timeDiff]
Ensuite, j'ai utilisé compréhension de liste:
plt.scatter(x,y,c=[timeDiffInt[a] for a in timeDiffInt],marker='<')
Mais j'obtiens cette erreur:
IndexError: list index out of range
Donc j'ai vérifié la longueur de x, y et timeDiffInt. Ils sont tous les mêmes. Quelqu'un peut-il m'aider avec cela? Merci.
OriginalL'auteur Sarvavyapi | 2013-10-11
Vous devez vous connecter pour publier un commentaire.
Vous êtes l'indexation de votre
timeDiffInt
liste avec les éléments de cette liste, si ceux-ci sont des nombres entiers plus grands que la longueur de la liste, il va montrer cette erreur.Voulez-vous votre scatter pour contenir deux couleurs? L'une des couleurs pour les valeurs de 0 et une autre couleurs pour d'autres valeurs?
Vous pouvez utiliser Numpy pour modifier votre liste de zéros et de uns:
Disperser ensuite, utiliser des couleurs différentes pour les deux valeurs.
edit:
Vous pouvez créer des couleurs pour des valeurs en faisant une palette de couleurs vous-même:
Aussi, comment puis-je changer les couleurs? Rouge pour les valeurs égales à zéro.
Voir la modifier.
fig
est la figure de l'objet de la tenue des axes et de tout ce qui est tracée. Si vous utilisezplt.scatter()
son créé en arrière-plan.Peut-être que je manque quelque chose, mais avez-vous vraiment dire
timeDiffInt
au lieu dez
? Si non qu'est-ce quez
?OriginalL'auteur Rutger Kassies