2011-01-25 22 views
5

Estoy tratando de trazar varias listas en el mismo diagrama en Mathematica (ListLinePlot) y usar PlotMarkers y el paquete PlotLegend para obtener la figura final. El problema es que Mathematica pone un marcador para cada punto y esto hace que sea difícil decir qué marcador está en el lugar de la trama. ¿Es posible tener un marcador de trazado cada n muestra (por ejemplo, cada 10 puntos para un gráfico de 100 puntos).Intervalos personalizados de marcadores en Mathematica PlotMarkers

La Directiva en este momento es PlotMarkers -> {Automático, Pequeño}.

+1

no sé una manera de hacerlo con PlotMarkers, podrías diezmar a su conjunto de datos para dejar sólo 1 de cada 10 ¿puntos? –

+1

Permítanme darle la bienvenida a StackOverflow y recordarle tres cosas que solemos hacer aquí: 1) A medida que reciba ayuda, trate de darle también ** respondiendo preguntas ** en su área de experiencia 2) ['Lea las preguntas frecuentes'] (http://tinyurl.com/2vycnvr) 3) Cuando veas buenas preguntas y respuestas, recíbelas ['usando los triángulos grises'] (http://i.imgur.com/kygEP.png), como la credibilidad de el sistema se basa en la reputación que obtienen los usuarios al compartir sus conocimientos. Recuerde también aceptar la respuesta que mejor resuelva su problema, en caso de haberlo, ['presionando el signo de la marca de verificación '] (http://i.imgur.com/uqJeW.png) –

Respuesta

3

Si desea más control sobre la ubicación de los marcadores de la trama que le da Brett's answer, entonces probablemente tenga que colocar los marcadores manualmente. Por ejemplo (modificando el ejemplo de Brett)

data = Accumulate /@ RandomReal[{-1/2, 1}, {3, 100}]; 
col = {Red, Blue, Green}; 
decimate[i_] := {col[[i]], PointSize -> Medium, 
    Point /@ Transpose[{Range[1, 100, 10], data[[i, 1 ;; -1 ;; 10]]}]} 
ListLinePlot[data, PlotStyle -> col, Epilog -> Table[decimate[i], {i, 3}]] 

enter image description here

Por supuesto Point se puede reemplazar con cualquier objeto gráfico que desee - por ejemplo Text, Inset etc ...

+0

Has vinculado a la respuesta de Brett. Yaro respondió, pero luego borró su contribución. –

+0

@belisarius: Gracias - ¡Debo haberme confundido! Editado! – Simon

+0

+1 La idea está ahí. Puede agregar parámetros para diezmar [] para satisfacer las necesidades más habituales. ¡Bien! –

4

Creo que la adición de algo así como Mesh->10 debe trabajar para usted:

data = Accumulate /@ RandomReal[{-1/2, 1}, {3, 100}]; 
ListLinePlot[data, PlotMarkers -> {Automatic, Small}, Mesh -> 10] 

ListLinePlot with a fixed number of plot markers

+2

Esta parece ser la dirección, pero incluso en el mismo ejemplo al cambiar Mesh-> 10 a Mesh-> 5 o 20 conduce a un comportamiento inusual ya que los marcadores ya no se corresponden con el color o la forma. – o4tlulz

+0

Por ejemplo, si se usa el mismo código pero con Malla -> 9 se obtiene el siguiente gráfico donde (por alguna razón) solo se usa el primer marcador de trazado en todas partes: http://ifile.it/j8g51q2 – Simon

2

Recuerde también se puede utilizar Tooltip para hacer que el marcador de coordenadas para que aparezca cuando se pasa el puntero del ratón sobre él:

enter image description here

1

El ejemplo de lo que estaba describiendo en el comentario. Los marcadores no se comportan correctamente.

Al parecer no puedo publicar imágenes, ejecutar primero el siguiente código

data = Accumulate /@ RandomReal[{-1/2, 1}, {3, 100}]; 
ListLinePlot[data, PlotMarkers -> {Automatic, Small}, Mesh -> 5] 

debería dar resultados incorrectos. Además, el número de datos y gráficos en la misma figura es bastante grande para seleccionar individualmente qué puntos y me gustaría mantener las mismas Directivas para diferentes gráficos y rangos de datos, ya que tienden a variar entre 100 y 300 en cada caso y tengo para guardarlos en diferentes tablas, ya que se utilizan en otros cálculos en el camino.

Terreno Publicado por Belisario, que ejecuta el código anterior

enter image description here

+0

Los resultados de su código me parecen correctos. O realmente estoy malinterpretando lo que desea lograr, o debe cerrar Mma y comenzar una nueva copia y volver a intentarlo. Por cierto, y solo para verificar, voy a editar tu respuesta y agregar la gráfica resultante, para que puedas comentar lo que está mal. –

+0

@belisarius: o4tlulz tiene razón. Mira los círculos azules en la línea rojiza y marrón en tu trama. Para varios valores de 'Mesh -> i' es incluso peor que eso. Tampoco se soluciona mediante el uso de 'PlotMarkers' explícitos. Parece que las opciones 'Grid' y' PlotMarkers' no funcionan bien juntas .... – Simon

+0

@ o4tlulz: Creo que te estabas refiriendo a mi respuesta en el último párrafo de tu "respuesta" anterior. Siempre que aborde el problema mediante programación, puede seleccionar los puntos (por ejemplo, basándose en el valor de x) y colocar marcadores de trama de forma consistente en todos sus trazados. – Simon

Cuestiones relacionadas