2011-04-21 11 views
10

Ayer, al agregar algunas tramas de tiempo a la pregunta "Optimally picking one element from each list", una vez más me acordé de una publicación de grupo matemático que hice hace un par de años ("Keeping plot annotations after regenerating a plot").Guardando las anotaciones de la trama

Estaba feliz anotando mis tramas (manualmente) cuando pensé que algunas etiquetas de ejes serían agradables. El problema es que la regeneración de las parcelas con las etiquetas de los ejes en su lugar destruirá sus anotaciones manuales.

Parece puede encontrar adiciones de usuarios en un pic llamado diagrama aquí: Rest[pic[[1, 1]]], por lo que si vuelve a generar la trama como pic2 usted puede conseguir sus anotaciones posterior si se utiliza:

Insert[pic2, Rest[pic[[1, 1]]], {1, 1}] 

recuerdo David Park (autor del paquete de Presentaciones) se opone con vehemencia a las anotaciones manuales. He hecho bastante una etiqueta programática, pero a veces colocar etiquetas bajo control del programa es demasiado difícil, como aquí (tenga en cuenta que no me gusta mucho PlotLegends, especialmente porque algunos colores están cerca uno del otro):

top-answerers

Ya era demasiado tarde para mi kludge, habiendo descartado los originales de la trama, pero me pregunto cuál es el estado actual de pensamiento sobre este tema.

  • ¿Hay mejores formas de hacerlo?
  • ¿Qué tan general es este método? ¿Funciona en todos los tipos de gráficos y trazados?
  • ¿Funciona en todas las versiones? (anterior a 5.2)
  • ¿Algún WRI planea mejorar el manejo de adiciones de usuarios en parcelas?

BTW El truco en mi publicación en el grupo de matemáticas difería ligeramente del que se muestra arriba y se usa en el gráfico de los 10 primeros. El principio es el mismo, sin embargo.


EDITAR

coloqué el código para hacer SO gráficos de datos como la de arriba en el Mathematica Toolbag.

EDITAR

El código se mueve ahora a la pregunta más apropiada por Champion Brett: How do I access the StackOverflow API from Mathematica

+3

+100 para el diagrama de registro! Casi creo que la pregunta fue solo una excusa para mostrar la trama ... – Simon

+0

¡Estoy de acuerdo con Simon! ¿De dónde sacaste los datos? –

+0

@belisarius y @Mark, probablemente del [explorador de datos] (http://data.stackexchange.com/) y acaba de tomar los 10 mejores contedores de matemáticas. Tristemente, no respondo suficientes preguntas para estar en esa lista ... suspiro. – rcollyer

Respuesta

4

Un método, que es un poco feo pero parece funcionar razonablemente bien para anotaciones de parcelas menores, es el siguiente.

Después de agregar anotaciones a través del Drawings tools, la información adicional se almacena con el gráfico y se puede inspeccionar, por ejemplo, seleccionando el soporte gráfico y usando Show Expression (Shift-Command-E en una Mac). La información adicional generalmente se puede seleccionar mediante el método de cortar y pegar o usando Cases, y luego se puede agregar a la nueva gráfica modificada usando Epilog.

Por ejemplo

Plot[Sin[x], {x, 0, 6 \[Pi]}] 

Añadir unas anotaciones dicta la siguiente:

enter image description here

Asignar el nombre plotgraphic a la imagen superior, una nueva trama modificada con anotaciones añadidas presente puede generarse de la siguiente manera (por ejemplo)

Labeled[Plot[Sin[x], {x, 0, 8 \[Pi]}, 
    Epilog -> Rest[Cases[plotgraphic, _List][[1]]]], "Sine Plot"] 

dando

enter image description here

Esto puede ser difícil, por decir lo menos, y el método sin duda se puede mejorar. También es probable que esté en la línea de lo que otros ya hacen. Sin embargo, da una trama donde las anotaciones están presentes 'programáticamente', y como nadie ha mencionado Epilog, decidí que valdría la pena publicarlo.

+1

Tampoco es necesario que asigne un nombre al primer gráfico, en su lugar puede simplemente copiar y pegar la imagen directamente en el comando 'Cases' – Simon

+0

@Simon Gracias. Esa es una linda – tomd

5

Personalmente, estoy de acuerdo con David Park, que además programática de anotación es superior. También es probable que sea más robusto y funcione con futuras ediciones de Mathematica. Realmente me gustaría ver que la paleta de herramientas de dibujo haya mejorado un poco y me gustaría ver varias anotaciones añadidas a mano que aparecen en el objeto resultante Graphics con mayor claridad. Si hubiera una atmósfera inerte como HeadAddedAnnotation o algo así, entonces usted podría encontrar todas estas modificaciones mediante programación a través de

Cases[editedPic, _AddedAnnotation, Infinity] 

Tal como es, me encuentro a través de la excavación de InputForm de la imagen y no estoy seguro de que su Rest[pic[[1, 1]]] siempre va a funcionar, especialmente en versiones futuras.

+0

Esto está en la misma línea que lo que propuse en el grupo de matemáticas, pero pensé en colocarlo en una opción: Gráficos [ {material original de la parcela, UserAdditions}, PlotRange-> Automatic, etc ..., UserAdditions-> {GraphicsStuff, GraphicsStuff} ] –

Cuestiones relacionadas