2011-05-09 30 views
5

Graph[] tiene una tendencia a cortar las etiquetas de los vértices en Mathematica. Estoy buscando una solución robusta.Gráfico [] corta las etiquetas de los vértices en Mathematica

Ejemplo:

Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexLabels -> "Name"] 

Graph[] cuts off the label '2'

Mi presente solución:

SetOptions[Graph, ImagePadding -> 12] 

Esto no es robusto porque el valor de ImagePadding necesidades para ajustarse manualmente en función del tamaño de la etiqueta.

+0

No tengo Mathematica 8. ¿Puedes intentar con 'ImagePadding' cada uno de los siguientes:' Automatic', 'Full',' All' por favor? –

+0

El valor predeterminado es 'Automático'. 'Full' y' All' dan el mismo resultado. – Szabolcs

+0

Bien. Pensé que valía la pena intentarlo. Además, no asuma que Automático siempre producirá el mismo resultado que ninguna configuración explícita; a veces no! –

Respuesta

2

Al parecer, usando FullGraphics en el objeto Graph se fijará el recorte con el fin de mostrar, a expensas de la interactividad.

Por el comentario siguiente, Show[] también funciona y evita modificar los gráficos.

+2

No lo usaría ya que FullGraphics cambia muchos aspectos de la salida. Pruebe, por ejemplo, 'FullGraphics [ Gráfico [{1 -> 2, 2 -> 3, 3 -> 1}, VertexLabels ->" Nombre ", PlotLabel ->" Esta es una prueba ", BaseStyle -> { FontFamily -> "Arial-Bold", FontSize -> 16}]] 'y reemplace' FullGraphics' con 'Show'. –

+0

@Sjoerd, es bueno saberlo. Aparte de los plazos apresurados, ¿puede pensar en una razón por la cual 'Graph' recortaría las etiquetas por defecto? –

+0

No realmente. Como mencioné en mi comentario a continuación, la pregunta parece que WRI es plenamente consciente del problema, ya que utilizan la solución alternativa de ImagePadding en la sección doc VertexLabel bastante. –

1

Aquí hay dos soluciones posibles.

Agrande el tamaño del vértice y coloque las etiquetas dentro del vértice. Por supuesto, esto también depende de la longitud de las etiquetas, pero para las etiquetas relativamente breves que funciona bien, mientras que el ejemplo anterior clips fuera de cualquier etiqueta de más de un carácter para el vértice 1.

ejemplo:

Table[Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexSize -> 0.3, 
    VertexLabels -> Table[i -> 
     Placed["vertex" <> ToString[i], p], {i, 3}], 
    VertexShapeFunction -> "Square", PlotLabel -> p], 
{p, {Left, Top, Right, Bottom, Center}}] 

Use información sobre herramientas para almacenar las etiquetas en lugar de mostrarlas en el gráfico. [Editar: Centro probablemente se ve mejor, y luego se puede envolver etiquetas poniendo \ n en la cadena si es necesario, pero de nuevo, depende de la longitud de la etiqueta.]

ejemplo:

Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexLabels -> Placed["Name", Tooltip]] 

Si bien esto impide que pueda ver todas las etiquetas al mismo tiempo, nunca tendrá ningún recorte.

Cuestiones relacionadas