pyplot facecolors color python colors matplotlib scatter-plot

facecolors - plt color python



FijaciĆ³n de color en parcelas de dispersiĆ³n en matplotlib (2)

Configuración de vmin y vmax debe hacer esto.

Aquí hay 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:

texto alt http://i45.tinypic.com/2qsqvrk.png

Quiero corregir el rango de colores en múltiples gráficos de dispersión y agregar una barra de colores a cada gráfico (que será igual en cada figura). Esencialmente, estoy arreglando todos los aspectos de los ejes y el espacio de color, etc. para que las parcelas sean directamente comparables a ojo.

Por mi vida, parece que no puedo entender todas las diversas formas de corregir la gama de colores. He intentado vmin, vmax, pero no parece hacer nada, también he intentado clim (x, y) y eso tampoco parece funcionar.

Esto debe aparecer aquí y allá, no puedo ser el único que quiera comparar varios subconjuntos de datos entre parcelas ... así que, ¿cómo arregla los colores para que cada información mantenga su color entre parcelas y no ¿Se vuelve a asignar a un color diferente debido al cambio en max / min del subconjunto -v- todo el conjunto?


Ok, esto no es realmente una respuesta, sino un seguimiento. Los resultados de mi codificación alteran el código de Tom de arriba. [no estoy seguro de que quiera eliminar la marca de verificación de respuesta, ya que el código anterior funciona, y es una respuesta a la pregunta]

¡No parece funcionar para mis datos! A continuación se muestra el código modificado que se puede usar con mis datos para producir un gráfico que no me funcionó por alguna extraña razón. La entrada se realizó mediante las funciones h5py (importación de archivos de datos hdf5).

A continuación, rf85 es un subconjunto de los arreglos para el gran lote de experimentos en los que la potencia de RF aplicada al sistema fue de aproximadamente 85 vatios hacia adelante. Básicamente, estoy cortando y cortando los datos de varias maneras para intentar ver una tendencia. Estos son los 85 vatios en comparación con el conjunto de datos completo que es la entrada actual (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 finalmente, la salida:

Colorfailed! http://i50.tinypic.com/21b6c7k.png

Tenga en cuenta que este no es el resultado perfecto para mi trabajo, pero no hice ningún esfuerzo para hacerlo perfecto. Sin embargo, lo que es importante: los puntos de datos que reconocerá como los mismos entre parcelas no contienen el mismo color, como debería ser el caso basado en el uso de vmin vmax anterior (como sugiere el código de Tom).

Esto es una locura. :( ¡Espero que alguien pueda aclararme esto! ¡Estoy seguro de que mi código no es tan bueno, así que por favor no te preocupes por ofender de ninguna manera cuando se trata de mi código!

Bolsa extra de cheetos muy calientes para cualquiera que pueda sugerir un camino a seguir. -Allen

ACTUALIZACIÓN: Tom10 detectó el problema : inadvertidamente había utilizado los datos incorrectos para uno de mis subarreglos, lo que provocó que los valores dieran niveles de color diferentes de los esperados (es decir, ¡mis datos estaban equivocados!) Podría darle otra votación, pero debido a mi método para hacer esta pregunta, no puedo (¡lo siento, Tom!)

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

Aquí hay una imagen actualizada que muestra que el método de Tom sí funciona, y que el trazado fue un problema en mi propio código: texto alternativo http://i50.tinypic.com/2ljgh8i.png