Question

Je veux fixer la gamme de couleurs sur plusieurs diagrammes de dispersion et d'ajouter dans un colorbar à chaque parcelle (qui sera le même dans chaque figure). Essentiellement, je réparais tous les aspects des axes et colorspace etc. pour que les parcelles sont directement comparables à l'oeil.

Pour la vie de moi, je ne peux pas sembler figurer toutes les différentes manières de fixer la couleur portée. J'ai essayé Vmin, Vmax, mais il ne semble pas faire quoi que ce soit, je l'ai aussi essayé CLIM (x, y) et qui ne semble pas fonctionner non plus.

Il doit venir ici et là, je ne peux pas être le seul qui veut comparer les différents sous-ensembles de données entre les parcelles ... alors, comment voulez-vous fixer les couleurs afin que chaque donnée conserve sa couleur entre les parcelles et ne soit pas reconfiguré à une couleur différente en raison du changement de min max / du sous-ensemble -V- l'ensemble?

Était-ce utile?

La solution

Réglage Vmin et Vmax devrait le faire.

Voici un exemple:

import matplotlib.pyplot as plt

xyc = range(20)

plt.subplot(121)
plt.scatter(xyc[:13], xyc[:13], c=xyc[:13], s=35, vmin=0, vmax=20)
plt.colorbar()
plt.xlim(0, 20)
plt.ylim(0, 20)

plt.subplot(122)
plt.scatter(xyc[8:20], xyc[8:20], c=xyc[8:20], s=35, vmin=0, vmax=20)   
plt.colorbar()
plt.xlim(0, 20)
plt.ylim(0, 20)

plt.show()

Et l'intrigue ce produit:

Autres conseils

Ok, ce n'est pas vraiment une réponse, mais un suivi. Les résultats de mon altérant de codage du code de Tom ci-dessus. [Pas sûr que je veux supprimer la coche de réponse, que le code ci-dessus ne travail, et est une réponse à la question!]

Il ne semble pas travailler pour mes données !! Ci-dessous le code modifié qui peut être utilisé avec mes données pour produire une parcelle qui ne fonctionnait pas pour moi pour une raison étrange. L'entrée se fait par des fonctions de h5py (import de fichier de données hdf5).

Dans le bas, rf85 est un sous-ensemble des tableaux pour le grand lot d'expériences où la puissance RF appliquée au système était d'environ 85 watts en avant. Je trancher essentiellement et couper en dés les données de différentes façons pour essayer de voir une tendance. Ce sont les 85 watts par rapport à l'ensemble des données qui est entrée en cours (il y a plus de données, mais c'est ce que j'ai pour l'instant).

import numpy
import matplotlib.pyplot as plt

CurrentsArray = [array([ 0.83333333,  0.8       ,  0.57142857,  0.83333333,  1.03333333,
        0.25      ,  0.81666667,  0.35714286,  0.26      ,  0.57142857,
        0.83333333,  0.47368421,  0.80645161,  0.47368421,  0.52631579,
        0.36666667,  0.47368421,  0.57142857,  0.47368421,  0.47368421,
        0.47368421,  0.47368421,  0.47368421,  0.61764706,  0.81081081,
        0.41666667,  0.47368421,  0.47368421,  0.45      ,  0.73333333,
        0.8       ,  0.8       ,  0.8       ,  0.47368421,  0.45      ,
        0.47368421,  0.83333333,  0.47368421,  0.22222222,  0.32894737,
        0.57142857,  0.83333333,  0.83333333,  1.        ,  1.        ,
        0.46666667])]

growthTarray = [array([ 705.,  620.,  705.,  725.,  712.,  705.,  680.,  680.,  620.,
        660.,  660.,  740.,  721.,  730.,  720.,  720.,  730.,  705.,
        690.,  705.,  680.,  715.,  705.,  670.,  705.,  705.,  650.,
        725.,  725.,  650.,  650.,  650.,  714.,  740.,  710.,  717.,
        737.,  740.,  660.,  705.,  725.,  650.,  710.,  703.,  700.,  650.])]

CuSearray = [array([ 0.46395015,  0.30287259,  0.43496888,  0.46931773,  0.47685844,
        0.44894925,  0.50727844,  0.45076198,  0.44977095,  0.41455029,
        0.38089693,  0.98174953,  0.48600461,  0.65466528,  0.40563053,
        0.22990327,  0.54372179,  0.43143358,  0.92515847,  0.73701742,
        0.64152173,  0.52708783,  0.51794063,  0.49      ,  0.48878252,
        0.45119732,  0.2190089 ,  0.43470776,  0.43509758,  0.52697697,
        0.21576805,  0.32913721,  0.48828072,  0.62201997,  0.71442359,
        0.55454867,  0.50981136,  0.48212956,  0.46      ,  0.45732419,
        0.43402525,  0.40290777,  0.38594786,  0.36777306,  0.36517926,
        0.29880924])]

PFarray = [array([ 384.,  285.,  280.,  274.,  185.,  185.,  184.,  184.,  184.,
        184.,  184.,  181.,  110.,  100.,  100.,  100.,   85.,   85.,
         84.,   84.,   84.,   84.,   84.,   84.,   84.,   84.,   84.,
         84.,   84.,   84.,   84.,   84.,   27.,   20.,    5.,    5.,
          1.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.,    0.])]

rf85growthTarray = [array([ 730.,  705.,  690.,  705.,  680.,  715.,  705.,  670.,  705.,
        705.,  650.,  725.,  725.,  650.,  650.,  650.])]

rf85CuSearray = [array([ 0.54372179,  0.43143358,  0.92515847,  0.73701742,  0.64152173,
        0.52708783,  0.51794063,  0.49      ,  0.48878252,  0.45119732,
        0.2190089 ,  0.43470776,  0.43509758,  0.52697697,  0.21576805,
        0.32913721])]

rf85PFarray = [array([ 85.,  85.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,  84.,
        84.,  84.,  84.,  84.,  84.])]

rf85CurrentsArray = [array([ 0.54372179,  0.43143358,  0.92515847,  0.73701742,  0.64152173,
        0.52708783,  0.51794063,  0.49      ,  0.48878252,  0.45119732,
        0.2190089 ,  0.43470776,  0.43509758,  0.52697697,  0.21576805,
        0.32913721])]

Datavmax = max(max(CurrentsArray))
Datavmin = min(min(CurrentsArray))

plt.subplot(121)
plt.scatter(growthTarray, CuSearray, PFarray, CurrentsArray, vmin=Datavmin, vmax=Datavmax, alpha=0.75)
plt.colorbar()
plt.xlim(600,760)
plt.ylim(0,2.5)

plt.subplot(122)
plt.scatter(rf85growthTarray, rf85CuSearray, rf85PFarray, rf85CurrentsArray, vmin=Datavmin, vmax=Datavmax, alpha=0.75)
plt.colorbar()
plt.xlim(600,760)
plt.ylim(0,2.5)

plt.show()

Et enfin, la sortie:

S'il vous plaît noter que ce n'est pas la sortie parfaite pour mon travail, mais je ne déployer des efforts rendant parfait. Ce qui est important cependant: datapoints que vous reconnaîtrez que même entre les parcelles ne contiennent pas la même couleur comme cela devrait être le cas en fonction de l'utilisation Vmin vmax ci-dessus (comme le code de Tom suggère)

Ceci est fou. :( Je fais quelqu'un l'espoir peut faire la lumière sur ce pour moi, je suis positif que mon code est pas terrible, donc s'il vous plaît ne vous inquiétez pas offenser en tout cas en ce qui concerne mon code !!

Sac supplémentaire de Cheetos de firey chaud à tous ceux qui peuvent suggérer une voie à suivre. -Allen

MISE À JOUR Tom10 pris le problème - Je l'avais utilisé par inadvertance des données erronées pour un de mes sous-réseaux, ce qui provoque les valeurs à donner différents niveaux de couleurs que prévu ( à-dire, mes données était faux!) gros accessoires à Tom pour this- Je voudrais pouvoir lui donner une autre mise aux voix, mais en raison de ma méthode de poser cette question, je ne peux pas (désolé Tom!)

S'il vous plaît voir aussi son merveilleux exemple de tracer le texte au niveau des positions de données mentionnées ci-dessous.

Voici une image mise à jour montrant que la méthode de Tom ne fait le travail, et que le tracé était un problème dans mon propre code: text alt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top