6 votos

Comparando muchas curvas de rendimiento: solicitud de sugerencias de visualización de datos

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

Example visualization

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.

4voto

Judioo Puntos 625

Como fue la recomendación que figura en el Color y el grosor de la línea de las recomendaciones para los gráficos de línea, el pequeño de los múltiplos son una solución común para las parcelas que tienen problemas con overplotting. Aquí está un ejemplo con el 5 curvas que proporcionan.

enter image description here

Es una gran cantidad de información, pero es bastante fácil ver que a, C Y E son todas disminuyendo. C & E tiene el aumento de la varianza para altos valores de los parámetros, mientras que B y D son bastante constantes, y llega a la parte inferior (me imagino que la métrica tiene que ser un valor positivo, dado los gráficos). Pequeño de los múltiplos se puede extender a 15 curvas, pero cuando la fabricación de los paneles más pequeños de la OMI que se deben hacer los paneles de un poco más minimalista en el espacio más pequeño, por ejemplo, la zanja de las líneas de la cuadrícula, hacen que las marcas más pequeñas y dispersas, etc.

Barras de Error de hacer el overplotting problema aún más problemático, por lo que es más difícil para cosas varias barras de error en un gráfico si las trayectorias se superponen. Una forma alternativa de me gusta a pesar de que es para uso semi-transparente áreas como oposición a los puntos y barras. A mi el etiquetado podría utilizar un poco de trabajo, pero aquí está un ejemplo con estas curvas (más y menos dos desviaciones estándar para hacer que las zonas un poco más amplio).

enter image description here

Tuve que poner el Correo en un panel separado, como se ocluida a y C. Ver la superposición de dos zonas no es tan difícil dado el derecho de colores para las áreas, tres pesar de que es muy difícil.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X