Mi petición
Quiero comparar el rendimiento de las curvas. Representar todas las curvas (con barras de error) en una sola figura hace un lío de cosas. Estoy interesado en formas de desorden de mi parcela y facilitar la comparación de las curvas.
Esta no es la intención como una programación de la cuestión: no es necesario proporcionar el código (aunque puede hacerlo si lo desea), una descripción verbal sobre cómo mejorar la trama es suficiente.
Información de fondo
Mis críticos claman por una comparación de mi nuevo método de análisis para una variedad de alternativas. Así que estoy corriendo de datos, simulaciones; muchos de ellos. Estas simulaciones generar artificial de datos, basado en una multitud de parámetros que pueden ser ajustados, y cada método se aplica para el conjunto de datos. El propósito del estudio es mostrar cómo cada método de análisis se comporta en respuesta a un cambio en los parámetros.
Me gustaría recoger un parámetro y empezar a cambiar. Para cada valor del parámetro, ejecutar la simulación de alrededor de 100 veces, la producción de 100 conjuntos de datos. Entonces me ejecución de cada método de análisis en cada conjunto de datos, la producción para el valor del parámetro y cada método, una media y desviación estándar a través de las 100 pistas.
El Python de código siguiente genera un juguete ejemplo de los datos que desea visualizar:
import numpy as np
from matplotlib import pyplot as plt
method_names = ['methodA', 'methodB', 'methodC', 'methodD', 'methodE']
parameter_values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Mean performance of each method for each value of the parameter. Each
# column corresponds to a method, each row to a value of the parameter.
means = np.array([
[ 0.33310882, 0.55161232, 0.71036095, 0.25674653, 0.69863089],
[ 0.19724624, 0.61167882, 0.6102655 , 0.30949569, 0.58623639],
[ 0.1356461 , 0.63687691, 0.56813548, 0.31290411, 0.52985315],
[ 0.10735517, 0.63363713, 0.51832115, 0.3246267 , 0.4784114 ],
[ 0.08432418, 0.64023433, 0.48225627, 0.35112391, 0.43079314],
[ 0.08762582, 0.63364727, 0.43214314, 0.34367382, 0.36650684],
[ 0.08586268, 0.63693999, 0.43351215, 0.33518338, 0.34467524],
[ 0.0741298 , 0.64564111, 0.40943309, 0.36357895, 0.312961 ],
[ 0.06163042, 0.62847129, 0.41779745, 0.36114122, 0.34724645],
[ 0.07159902, 0.63879868, 0.38652708, 0.366425 , 0.28765962]
])
# Standard deviation of the performance of each method for each value of the
# parameter. Each column corresponds to a method, each row to a value of the
# parameter.
stds = np.array([
[ 0.11254176, 0.10631446, 0.06812396, 0.08699054, 0.06980061],
[ 0.08628651, 0.10833594, 0.09483841, 0.1183296 , 0.1024852 ],
[ 0.06817238, 0.10773644, 0.12192901, 0.1277693 , 0.13846137],
[ 0.06689446, 0.10816033, 0.12069033, 0.11992669, 0.13071808],
[ 0.05422928, 0.10254246, 0.12434407, 0.13343013, 0.1383579 ],
[ 0.06296734, 0.1000487 , 0.14946763, 0.13094066, 0.1616725 ],
[ 0.06012606, 0.10337348, 0.13938654, 0.10372903, 0.16188025],
[ 0.05196553, 0.10243771, 0.12804723, 0.12445235, 0.15411106],
[ 0.04714007, 0.09093044, 0.14208883, 0.1209349 , 0.16194828],
[ 0.05830223, 0.1081157 , 0.15168251, 0.12709928, 0.17751713]
])
Y aquí está lo que un ingenuo visualización podría ser así:
Y estos son sólo 5 curvas... Í tiene alrededor de 15 curvas para comparar.
Nota al margen
La manera obvia de mejorar la trama es mostrar sólo una selección de las curvas. Estoy tratando de centrarse en los más interesantes en el papel, y desterrar el resto de ellos a la sección de información suplementaria. El mejor que me puede hacer mi parcela, al menos curvas que tendría que desterrar.