2012-02-28 9 views
8

Dentro de mi proyecto MATLAB GUI actual, tengo dos objetos de ejes. El primero es utilizado por la solución "uibutton" (no uso GUIDE) para mostrar una fórmula LaTeX (hasta donde yo sé, solo las etiquetas de ejes son capaces de usar LaTeX mientras que los campos de texto estáticos normales no son ...) El otro objeto de ejes se usa para trazar una función en 3D.¿Cómo evitar que las etiquetas LATEX en la GUI de MATLAB se vuelvan borrosas?

El programa tiene los siguientes pasos:

  1. los primeros ejes creats la LATEX-fórmula (por ejemplo, f (x) =).
  2. El usuario ingresa una función en el campo de edición después de la fórmula LaTeX (por ejemplo, f (x) = a + b).
  3. El usuario presiona un botón "trazar".
  4. La función 3D se traza en el segundo objeto de ejes.

Problema:

Tan pronto como se representa gráficamente la función 3D, el látex-formular agradable rendido vuelve quebradizo. ¿Hay alguna manera de evitar que esto suceda?

Problem Demonstration

http://i42.tinypic.com/348pq2u.png (Vea la imagen para la demostración problema)

+0

dieterw, pregunta interesante! Todo lo que puedo ofrecerle es que pueda subir sus fotos directamente en SO si así lo desea. – macduff

+0

hey macduff, gracias por su rápida respuesta. sí, también pensé en eso, pero el problema es que las imágenes se pixelarían si el usuario cambia el tamaño de la ventana. Esto no sucederá, si esas LaTeX-fuentes se reintegran en el cambio de tamaño. – dieterw

+0

¡guau! increíble razonamiento! ¡Creo que llegarás lejos en TAN! – macduff

Respuesta

2

Compruebe sus propiedades de la figura antes y después de dibujar la gráfica 3D

get(gcf, 'renderer') 

Mi conjetura es que el trazado de la función 3D cambia el renderizador del predeterminado ("pintores") a otro (probablemente OpenGL). La representación de Latex de Matlab no parece funcionar bien con zbuffer u OpenGL (estos producen mapas de bits en lugar de arte lineal).

puede ser atrapado si pintores no pueden hacer que sus gráficos en 3D correctamente, pero se puede tratar de forzarlo fijando el procesador manualmente de nuevo a pintores

set(gcf, 'renderer', 'painters') 
+0

gracias por la respuesta. Intenté eso y, de hecho, al forzar el renderizador de los pintores, las fuentes LaTeX se mantienen suaves, pero como ya has adivinado, la figura en 3D no se puede renderizar correctamente. Dado que no se pueden establecer representadores diferentes para un eje/figura, mi idea es definir dos figuras diferentes (una con las etiquetas LaTeX y otra con la gráfica 3D) dentro de una ventana y establecer diferentes representadores para cada figura. Tengo que intentar eso, pero tal vez mañana. ¿O es eso posible? – dieterw

+1

@dieterw He descubierto que si necesita cifras de calidad de publicación de MATLAB y combina dibujos de líneas y parches, generalmente tiene que crear cada componente por separado y luego combinarlos en un programa de gráficos, como Adobe Illustrator. Aquí, también podría simplemente agregar su texto directamente en Illustrator después. – Marc

+0

muy informativo. Supongo que el arte lineal es igual a los trazados 2D y los parches son iguales a los trazados tridimensionales. El caso es que este programa que escribí se usa para la demostración en vivo de algunas funciones microeconómicas donde mi profesor debería ser capaz de cambiar los parámetros por un lado (de ahí las etiquetas LaTeX) y ver el gráfico 3D en el otro lado. Si tuviera que publicar ambos en un documento, su camino sería el mejor, supongo. – dieterw

Cuestiones relacionadas