Si f es la figura de manejar, yo quería usar plot3(..) en ella al igual que yo usaría plot(..), pero esto no funcionó:

>> plot3(f, t, real(Y), imag(Y))
Error using plot3
Vectors must be the same lengths.

Entonces me di cuenta de que la manera de hacer esto es:

  1. Primero hacer la correspondiente figura actual.
  2. A continuación, utilizar la plot3(..) función.

Puedo encontrar lo que la cifra actual es el uso de gcf, pero ¿cómo puedo hacer una figura actual (a través de su identificador)?

Por cierto, si no tenemos una referencia a los ejes de un objeto, entonces podemos (1) aa = findobj(gcf, 'type', 'axes'), entonces (2) cellfun(@(x) disp(x), get(aa, 'position')), a partir de la cual podemos decir que subtrama es que, a continuación, (3) axes(aa(2)) por ejemplo, para hacer el segundo de los ejes del objeto corriente.
(Mientras que en las figuras, el corriente estado parece cambiar con el foco.)

OriginalEl autor Evgeni Sergeev | 2012-10-08

4 Comentarios

  1. 25

    Este método tiene mi preferencia personal:

    set(0, 'currentfigure', f);  %# for figures
    set(f, 'currentaxes', axs);  %# for axes with handle axs on figure f

    ya que estos comandos son de su propia documentación. Me parece

    figure(f)

    y el como confuso en la primera lectura — ¿usted crea una nueva figura? o simplemente hacer una existente activo? -> más de la lectura del contexto.

    La legibilidad es importante.
    Otra ventaja es que Matlab no establece explícitamente la visibilidad » on » y con esto, pero conserva la antigua visibilidad de la figura.
    Puedo tomar su punto de WRT legibilidad, pero es la 1ª línea realmente más legible? WTF es 0? Hombre yo odio Matlab.
    Cada lenguaje de programación tiene sus peculiaridades, no hay necesidad de comenzar a golpear. Lo bueno es que 0 ha sido sustituido en los últimos MATLAB con groot — los gráficos objeto raíz. Tiene más sentido.

    OriginalEl autor Rody Oldenhuis

  2. 8

    Es realmente tan simple como la alimentación de los f de nuevo en el figure(..) comando:

    figure(f)    %Makes the figure current.

    También, si se me hizo algo como esto:

    f = figure('IntegerHandle','off');    % With unique, non-reusable handle.
    top = subplot(2, 1, 1);
    bot = subplot(2, 1, 2);

    Entonces puedo hacer el ejes top o bottom actual mediante la emisión de un comando como este:

    subplot(top);

    Esto también funciona:

    axes(top);

    Pero los dos tipos de identificadores que no se puede mezclar: axes(..) y subplot(..) de trabajo en los ejes de las manijas, mientras figure(..) obras en la figura asas.

    Si usted supiera la respuesta, ¿por qué la pregunta?
    para ganar un la divisa (2) porque animados en (véase también (1))
    Maldita sea, Matlab chupa a veces. En serio, Mathworks, ¿por qué no puede usted agregar el axes_handle parámetro para plot3 ?
    Porque no podía encontrar la respuesta tan rápido como debería haber tenido. Yo esperaba que el tipo de «matlab hacer la figura actual» en tanto y obtener la respuesta en 5 segundos, pero no estaba allí. Desde que hago eso docenas de veces al día, y un montón de ayuda fuera de él, tiene sentido para contribuir en ocasiones, cuando se conoce a una pregunta que podría muy posiblemente salvar a un montón de gente 2 minutos cada uno.
    Me pregunto si es el insignias o, más generalmente, la pulcritud de escribir en este sitio, que es la verdadera motivación en el subconsciente.

    OriginalEl autor Evgeni Sergeev

  3. 4

    Mientras que otros han proporcionado exactamente lo que has pedido (cómo hacer una de los ejes o de la figura de la actual). Mi forma preferida para tratar con esto, es para especificar explícitamente el padre de su parcela en la llamada a plot3.

    Si usted mira la documentación, usted verá que usted puede especificar el padre ejes como el primer parámetro a la función. Si parece que usted ha intentado hacer esto en tu ejemplo, pero usted proporciona un identificador para un figura en lugar de un ejes.

    f = figure()
    ax = axes('Parent', f)
    im = plot3(ax, X, Y, Z);

    Alternativamente, yo prefiero la solución explícita

    im = plot3(X, Y, Z, 'Parent', ax)

    La cosa buena acerca de este parámetro explícito/especificación de valor de los padres es que es aceptado por todos objetos gráficos. Funciones como plot y plot3 son en realidad funciones auxiliares que ajustar la funcionalidad de line y permitir la convención de pasar el padre primero. El parámetro/valor del enfoque es ampliamente aceptado, independientemente de si está trabajando con una función de nivel superior (plot, plot3, imshow) o el bajo nivel de los objetos (line, image, etc.)

    Los dos beneficios aquí hay que eliminar la sobrecarga de MATLAB tratando de averiguar dónde poner su trama y también, evita MATLAB de tener que cambiar la cifra que se muestra actualmente, obligando a una nueva representación de lo que es uno de MATLAB es más lento tareas.

    OriginalEl autor Suever

  4. 0

    dar manejar nombre a la figura, a dar un poco de ejemplo

      f1 = figure;
      imshow(image1);
      f2 = figure;
      imshow(image2);
      % edit image 1
      figure(f1);
      text(2,3,'done');

    OriginalEl autor neouyghur

Dejar respuesta

Please enter your comment!
Please enter your name here