3 votos

Visualización de un conjunto de datos 3D de proporciones

Estoy buscando ideas de visualización para los siguientes datos:

  • Tengo un $10\times 12$ cuadrícula de puntos $(x_i,m_j)$ donde el $x_i$ son un conjunto de distancias (por ejemplo, 1,2,..., 10 m) y las $m_j$ son los 12 meses.

  • En cada $(x_i,m_j)$ Tengo 4 valores $q_1,\ldots,q_4$ que suman 1.

  • Intento mostrar cómo la proporción de $q_i$ varía con $x$ y $m$ para poder ver los cambios a lo largo de los meses y la distancia.

Para explicarlo con algunos datos ficticios ( Mathematica ):

data = Table[{x m/12, x Tanh[m/6], x/m, x^2/m^2} ~Normalize~ Total, {x, 10}, {m, 12}];

Para una sola distancia, podría hacer algo como

BarChart[First@data, ChartLayout -> "Stacked"]

Pic1

O para una sola $q_i$ podría hacer

BarChart[data[[;; , ;; , 1]], ChartLayout -> "Stacked"]

Pic2

Tal vez podría incluso comprimir las barras y apilar las 10 distancias diferentes (ya que es un número pequeño) a lo largo del eje Y para mostrar esto, pero parece sobrecargado. Tampoco estoy seguro de que un gráfico de burbujas en 3D pudiera ayudar.

Tal vez la solución más sencilla sería tener 4 gráficos, cada uno mostrando cómo la cantidad respectiva $q_i$ cambios... esta es ciertamente una opción para mí, pero quería preguntar si hay otras alternativas mejores de visualizar los datos.

4voto

erik Puntos 3923

Cada alternativa destacará por mostrar algunas características de los datos, por lo que la "mejor" vista depende de la pregunta a la que se quiera responder. O puede que necesites varias vistas para responder a varias preguntas (preferiblemente con un software que las vincule entre sí).

A continuación se ofrecen algunas alternativas. No soy un usuario habitual de Mathematica (por lo que es probable que haya una mejor manera de hacer gráficos de mayor calidad) y no me he molestado con el etiquetado o leyendas.

Para ver la distribución de cada componente, una serie de mapas de calor funciona bien.

Table[MatrixPlot[data[[;; , ;; , q]], ColorFunctionScaling -> False, 
  ColorFunction -> Function[{z}, Hue[1, z, 0.9]]], {q, 4}]

enter image description here

Si los datos son realmente tan suaves, los gráficos de contorno pueden funcionar mejor:

Table[ListContourPlot[data[[;; , ;; , q]], ImageSize -> 250, 
  PlotRange -> {0, 1}, ColorFunctionScaling -> False, Contours -> 10, 
  ContourStyle -> None, 
  ColorFunction -> Function[{z}, Hue[1, z, 0.9]]], {q, 4}]

enter image description here

(Una versión suavizada de la primera opción, excepto que con el eje Y invertido).

Para una representación más precisa de los valores (la posición es más precisa que el color desde el punto de vista perceptivo), pueden utilizarse gráficos de líneas superpuestas (una por cada valor de distancia):

Table[ListLinePlot[data[[;; , ;; , q]],  PlotRange -> {0, 0.9}, 
  PlotStyle -> {Thick}, ImageSize -> 250], {q, 4}]

enter image description here

Ninguno de los anteriores muestra proporciones. Para ello, prueba con una cuadrícula de 10 x 12 de gráficos lineales o de barras:

Table[ListLinePlot[data[[x, m]], Axes -> None, PlotRange -> {0, 1}, 
  Filling -> Axis, ImageSize -> 35], {x, 10}, {m, 12}]

enter image description here

Table[BarChart[data[[x, m]], Axes -> None, PlotRange -> {0, 1}, 
  ImageSize -> 35, ChartStyle -> "Rainbow", 
  ChartBaseStyle -> EdgeForm[None]], {x, 10}, {m, 12}]

enter image description here

Los gráficos lineales ponen de relieve el cambio entre dos años consecutivos. q mientras que el diagrama de barras tiene una connotación más categórica.

Por último, una cuadrícula similar de gráficos circulares facilitará la visualización de determinadas características, como si un componente tiene más del 50% del valor en una celda determinada, a expensas de la precisión de otros valores.

Table[PieChart[{x m/12, x Tanh[m/6], x/m, x^2/m^2}, 
  ImageSize -> 30], {x, 10}, {m, 12}]

enter image description here

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