Pregunta

Quiero fijar la gama de colores en varios gráficos de dispersión y añadir en una barra de colores a cada parcela (que será el mismo en cada figura). En esencia, estoy arreglando todos los aspectos de los ejes y el espacio de color etc, para que las parcelas son directamente comparables a simple vista.

Para la vida de mí, no puedo parecer imaginar todas las diversas maneras de fijar el color de rango. He intentado Vmin, Vmax, pero no parece hacer nada, también he intentado Clim (x, y) y que no parece que funciona bien.

Esto debe venir aquí y allá, no puede ser el único que quiere comparar diferentes subconjuntos de datos entre las parcelas ... así, ¿cómo se puede arreglar los colores para que cada dato mantiene de color entre parcelas y no recibe reasigna a un color diferente debido al cambio de máx / mín del subconjunto -v- todo el conjunto?

¿Fue útil?

Solución

Configuración de Vmin y Vmax debe hacer esto.

Este es un ejemplo:

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

Y la trama que esto produce:

alt text

Otros consejos

Ok, esto no es realmente una respuesta, sino un seguimiento. Los resultados de mi alterar el código de codificación de Tom arriba. [No estoy seguro de que quiero quitar la marca de verificación respuesta, como el código anterior funciona, y es una respuesta a la pregunta!]

No parece que funciona para mis datos !! A continuación se muestra el código modificado que se puede utilizar con mis datos para producir una trama que no funcionaba para mí por alguna extraña razón. La entrada de vino a través de las funciones h5py (hdf5 archivo de datos de importación).

En el siguiente, rf85 es un subconjunto de las matrices para la gran lote de experimentos en los que la potencia de RF aplicada al sistema fue de aproximadamente 85 vatios adelante. Estoy básicamente de cortar y rebanar los datos de varias maneras para tratar de ver una tendencia. Se trata de los 85 vatios en comparación con el conjunto de datos completo que es la entrada de corriente (no hay más datos, pero esto es lo que tengo por ahora).

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

Y, por último, la salida:

colorfailed!

Tenga en cuenta que esta no es la salida perfecta para mi trabajo, pero no gastar esfuerzo por lo que es perfecto. Lo que es importante sin embargo: puntos de datos que se le reconoce como el mismo entre las parcelas no contienen el mismo color como debería ser el caso con base en el uso Vmin Vmáx anteriormente (como el código de Tom sugiere)

Esto es una locura. :( espero que alguien pueda arrojar luz sobre esto para mí! Estoy seguro de que mi código no es tan grande, así que por favor no se preocupe por ofender de ninguna manera cuando se trata de mi código !!

bolsa extra de Cheetos firey caliente a cualquiera que pueda sugerir un camino a seguir. -Allen

Actualización: Tom10 captó el problema - yo había usado inadvertidamente los datos erróneos para una de mis sub-series, haciendo que los valores para dar diferentes niveles de color de lo esperado ( es decir, los datos de mi estaba mal!) Gran apoyos a Tom para esto: me gustaría poder dar otro a voto, pero debido a mi método de hacer esta pregunta, no puedo (lo siento Tom!)

Por favor, vea también su maravilloso ejemplo de trazado de texto en las posiciones de datos se mencionan a continuación.

Esta es una imagen actualizada mostrando que el método de Tom trabaja de hecho, y que el trazado era un problema en mi propio código: texto alternativo ??

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top