He estado tratando de dibujar flechas en Matlab en mi figura, pero todos tienen un aspecto terrible.
También, quiero que mi punta de flecha para ser un triángulo sólido, no un V.

He intentado utilizar los paquetes disponibles en el Archivo de Matlab Exchange: flecha, flechas, arrows3, y probablemente por lo menos uno más.

Incluso he intentado crear manualmente una flecha en el Matlab la figura del editor, pero cuando me ajustar el ancho de la línea, la flecha se parece a esto:

Cómo dibujar buena pinta flechas en Matlab?

He utilizado el anotación comando para crear la flecha arriba:

annotation(gcf,'arrow',[0.621875 0.457916666666667],...
                       [0.205421152030217 0.40755429650614],...
                       'HeadLength',4,'LineWidth',5);

Aquí está el resultado de intentar usar la flecha paquete disponible aquí: La flecha.m (observe cómo la flecha inferior de la cabeza no es perpendicular a la línea:

Cómo dibujar buena pinta flechas en Matlab?

Incluso he intentado lo siguiente y aquí está el resultado siguiente (observe el aspecto terrible de la punta de flecha):

 figure
 plot(1:10, 1:10)
 annotation(gcf,'arrow',[0.621875 0.457916666666667],...
                        [0.205421152030217 0.40755429650614],...
                        'HeadLength',4,'LineWidth',5);

Cómo dibujar buena pinta flechas en Matlab?

Pasó manera manera demasiado tiempo tratando de resolver este problema. Mejor respuesta hasta ahora que se me ocurrió: Descargar e instalar Foxit Reader y anotar los archivos Pdf en allí.

OriginalEl autor Veridian | 2013-08-13

7 Comentarios

  1. 4

    Los gráficos vectoriales es duro. Aunque Matlab de la tipografía es tan malo, pero aquí es una visión simplista de texto basado en la solución (me niego a hacer este tipo de anotación en Matlab):

    figure
    plot(1:10, 1:10)
    text(5,4,'\rightarrow','FontSize',54,'Rotation',135,...
             'HorizontalAlignment','center');

    que los rendimientos de una figura como la de este

                            Cómo dibujar buena pinta flechas en Matlab?

    Nota que he usado '\leftarrow' porque apunta en la dirección de los cero grados, lo que hace que las matemáticas en mi cabeza más fácil. Esto no es ninguna lata solución, usted todavía necesita jugar con la posición de superar el hecho de que Matlab es la alineación de este texto (véase la 'Extent' y 'Margin' propiedades). No es de extrañar, usted puede ver los pequeños fallos. El Látex intérprete puede ser usado para obtener un estilo diferente, cabeza de flecha:

        text(5,4,'$\rightarrow$','FontSize',54,'Rotation',135,...
                 'HorizontalAlignment','center','Interpreter','latex');

    No tengo los pequeños problemas técnicos con esta opción, pero las flechas se ven diferentes (probablemente son otros de Látex estilos de flecha que podría ser sustituido). Cambiar la fuente también puede tener un efecto y sin duda hay otros basados en texto flechas que podría ser usado. Más información sobre la adición de flechas se puede encontrar en este artículo de The MathWorks.

    textarrow tiene los mismos problemas como flecha.
    Me gustaría una flecha en forma de triángulo
    Que se puede hacer. Usted sólo tiene que utilizar el Látex (y, probablemente, instalar más fuentes de tex). Yo no dije que iba a ser fácil.
    No hay manera de hacer que la flecha NO?
    No se puede tener todo. Yo uso una fuente que incluye un triángulo llenado (como la de la cabeza estilo que usted quiere) y, a continuación, añadir la flecha de la cola como una línea de su peso deseado. Aún tengo que encontrar una satisfacción y solución general (para 2-D flechas) para su pregunta en Matlab. Yo estaría interesado en uno mismo. Es ciertamente factible con vectores, pero había que tomar el trabajo y los conocimientos técnicos.

    OriginalEl autor horchler

  2. 3

    Otra solución es el uso de la abrir-fuente Waterloo gráficos – una biblioteca que se encarga de ello proporcionar un puro de Java biblioteca de gráficos 2D funciones que se pueden integrar fácilmente en Matlab. Ver algunos ejemplos aquí

    Por ejemplo, prueba este código (después de instalar correctamente waterloo)

    f = GXFigure();
    x = -5:0.1:5;
    gr1 = gxgca();
    a1 = line(gr1, x, cos(x), 'LineSpec','-ob');
    b1 = line(gr1, x, sin(x), 'LineSpec','-sg');
    annotation(gr1,'arrow',[0.1 0.1],[0.4 0.4],'HeadLength',0.2,'HeadWidth', 0.5, 'LineWidth',2);
    gr1.getObject().getView().autoScale();

    Cómo dibujar buena pinta flechas en Matlab?

    Gracias, voy a buscar en este. Las fuentes y todo lo que todavía se ven como regular matlab derecho?
    Exactamente ¿cómo puedo dibujar una flecha?
    véase mi edición en la respuesta
    Gracias, pero quiero una flecha negra, con una cola que mantiene su forma cuando un ángulo de un grado que no es 0, 90, 180 o 360.
    sólo añadir ...'color',[ 0 0 0] a la anotación de la línea. Tratar de explorar otros identificadores para ver cómo hacer lo que quiera.

    OriginalEl autor bla

  3. 2

    Después de haber trabajado con Matlab para más de 10 años y ver casi a cero el progreso en la calidad de los lotes (suavizado de salida de mapa de bits, de aspecto decente eps-archivos, …), decidí que mi largo tiempo de solución será aquí. Algunos ejemplos de aspecto decente flechas aquí, más hermosos gráficos aquí. Desafortunadamente, algunas de las cajas de herramientas me impide ir completamente a numpy/scipy/matplotlib. Sé que esto es más de una diatriba de una respuesta, pero esa es mi solución …

    Agradezco su respuesta señor. Yo, literalmente, acaba de instalar este paquete de 1 segundo atrás, ja. Ahora no tengo ninguna idea de cómo usarlo. Puedo utilizarlo con MATLAB o es independiente?
    No, no es no es independiente, es la representación paquete que va con numpy, que es una biblioteca de la python-lenguaje de secuencias de comandos (una adecuada orientada a objetos lenguaje de secuencias de comandos, con las bibliotecas para cualquier tarea imaginable). Algunos de cajas de herramientas de Matlab están cubiertos por el scipy-proyecto. Un poco de una curva de aprendizaje, pero merece la pena. Es la única alternativa de código abierto a matlab, y casi la mitad de mis colegas están utilizando. Olvidar octava/scilab, numpy/scipy/matplotlib/ipython es el futuro …
    15+ años aquí, y por desgracia, sólo puedo estar de acuerdo. Matlab puede ser bueno en el cálculo, pero los gráficos pueden ser una pesadilla. Por lo que he visto de HG2 en el uso real, el futuro no necesariamente se ven prometedoras.
    Yo todavía no has instalado aún. Esto es llegar a ser una molestia enorme sólo para dibujar una línea. Entre los errores con matplotlib, algo que se llama dateutil y ez_setup, esto es ridículo. Hay algún lugar en línea recta hacia adelante las instrucciones?
    Yo no digo que esto era una solución que le dará su parcela esta noche, esto te llevará bastante tiempo de instalación y aprender. En primer lugar descargar e instalar python y su forma de trabajo a través de la tutoría, a continuación, instalar numpy y leer su tutorial y ‘numpy para matlab de los usuarios de la página. A continuación, instale matplotlib y ir a través de algunos ejemplos. En windows, la forma más sencilla podría ser instalar algunos listos distribución de python (yo usé de activestate o enthought epd, pero eso fue hace varios años). En linux, sólo tiene que utilizar su paquete estándar manager y todo va a estar bien.

    OriginalEl autor Bas Swinckels

  4. 1

    El uso de la aljaba o quiver3 para 3-D parcelas sin duda se verá mejor que la que la última flecha realizadas mediante la anotación. No estoy seguro de que se verá mucho mejor que el que hicieron uso de la Flecha.m paquete, aunque. Es posible cambiar el stlyes en la aljaba si así lo desea.

    Carcaj hecho redondeado cabezas de flecha cuando he aumentado el ancho de línea
    El aumento de la flecha de la aljaba de los tamaños de cabeza puede ser molesto. Sería algo parecido a este trabajo? mathworks.com/matlabcentral/fileexchange/…
    Trató de que demasiado, no ayuda tampoco.

    OriginalEl autor dynamo

  5. 0

    Cuando basado en la línea de flechas falla, siempre se puede intentar la revisión basada en la:

    xArrow = [0 1 1 1.2 1 1 0];               % X-coords of arrow edge points
    yArrow = [-0.1 -0.1 -0.2 0 0.2 0.1 0.1];  % Y-coords of arrow edge points
    hArrow = fill(xArrow,yArrow, [1 0 0]);    % Plot a red arrow
    axis equal                                % Set axis tick marks to be equal

    Cómo dibujar buena pinta flechas en Matlab?

    Aunque más trabajo, que potencialmente puede parametrizar la anterior en una función que toma un número de argumentos para el ajuste de la escala, relación de aspecto, la rotación y la posición de la flecha. Usted puede incluso ajustar el color, el borde, el color de la línea, y la transparencia alfa.

    Este tipo de idea parece haber sido implementado por François Beauducel en su Archivo de Intercambio de la presentación FLECHAS: generalizada en 2-D y las flechas de la parcela.

    Puede usted por favor explique su respuesta?
    He probado el Francois Beauducel archivo, tenía muchos problemas con el cambio de tamaño de las flechas.
    Podría usted comentar sobre lo que has intentado para su presentación?
    Traté de dibujar flechas y no funcione correctamente, fue horrible. Si puedes editar tu respuesta con los siguientes parámetros y probar a mí me funciona, a continuación, voy a intentarlo: eje Y registro de escala, el eje x del dominio de 0 a 0.018, eje y de 0 a 300. Flecha girada hacia abajo de [x,y] = (0.01,140) a cerca de [x,y] = (0.01,100), con una anchura similar a la de las flechas que dibujé en mi pregunta.
    Parte de su problema es el registro de la escala en el eje y. Que se va a distorsionar la revisión basada en las flechas, que es probablemente la razón por la que un número de estas soluciones están fallando. Es probablemente va a ser más complicado encontrar una solución general que trabaja con el registro de la escala.

    OriginalEl autor gnovice

  6. 0

    Ahora existe la DaVinci Dibujar cuadro de herramientas (revelación completa: escribí/vender en la caja de herramientas), que utiliza el bajo nivel de los comandos de Matlab como plot() y patch() a dibujar de nivel medio de las formas como flechas. Ejemplo de sintaxis:

    davinci( 'arrow', 'X',           [0 10],      ...
                      'Y',           [0 2],       ...
                      'Shaft.Width', 1,           ...
                      'Head.Length', 2.5,         ...
                      'Color',       'w',         ...
                      'EdgeColor',   'k',         ...
                      'LineWidth',   2.5 )

    De la documentación:

    Cómo dibujar buena pinta flechas en Matlab?

    OriginalEl autor Leonard Wayne

Dejar respuesta

Please enter your comment!
Please enter your name here