Domanda

Ho una domanda molto semplice, per gli utenti MATLAB:

Se carico un file cifra (.fig) con il comando di carico, c'è qualche modo per cambiare le linee di proprietà tracciati dalla riga di comando? (Larghezza, colore, pennarello, ecc.)

PD: Le prime due opzioni in base alle informazioni in Definire il colore delle linee per la stampa Su questa pagina ... solo lavoro se si utilizza il comando plot. A quanto pare sono inutili se si carica la figura.

È stato utile?

Soluzione

È possibile ottenere le maniglie per tutti gli oggetti di linea sulla cifra attuale con FINDOBJ funzione :

hline = findobj(gcf, 'type', 'line');

Allora è possibile modificare alcune proprietà per tutti gli oggetti linea:

set(hline,'LineWidth',3)

o solo per alcuni di essi:

set(hline(1),'LineWidth',3) 
set(hline(2:3),'LineStyle',':') 
idx = [4 5];
set(hline(idx),'Marker','*') 

Altri suggerimenti

Al fine di manipolare gli oggetti in una figura, è necessario avere accesso ai loro manici. Se si crea una figura usando le funzioni di tracciato, queste torneranno maniglie a voi. Quando si sta aprendo una figura, come è il vostro caso, è necessario seguire una grafica oggetti albero per trovare la maniglia per l'elemento specifico che si desidera manipolare.

In questa pagina ha informazioni sulla struttura di oggetti grafici .

Il percorso per le maniglie che si desidera dipenderà dalla vostra figura, ma, come un esempio, se la vostra figura è stata creata usando un semplice comando plot, questo sarebbe un modo per immobili cambiare linea:

x = 0:0.1:2;
plot(x,sin(x));

fig = gcf % get a handle to the current figure
% get handles to the children of that figure: the axes in this case
ax = get(fig,'children') 
% get handles to the elements in the axes: a single line plot here
h = get(ax,'children') 
% manipulate desired properties of the line, e.g. line width
set(h,'LineWidth',3)

In aggiunta alla risposta @yuk, se si dispone di un leggenda disegnato così ,

hline = findobj(gcf, 'type', 'line');

tornerà linee N x 3 (o più precisamente - lines plotted + 2x lines in legend). sarò qui solo guardare il caso in cui tutte le linee che sono tracciati sono anche nella leggenda.

Il sequenziamento è strano: in caso di 5 linee (notiamo loro 1 to 5) tracciati e la leggenda ha aggiunto, si avrà

hline:
1 : 5 th line (mistical)    
2 : 5 th line (in legend)
3 : 4 th line (mistical)    
4 : 4 th line (in legend)
5 : 3 th line (mistical)    
6 : 3 th line (in legend)
7 : 2 th line (mistical)    
8 : 2 th line (in legend)
9 : 1 th line (mistical)    
10: 1 th line (in legend)
11: 5 th line (in plot)
12: 4 th line (in plot)
13: 3 th line (in plot)
14: 2 th line (in plot)
15: 1 th line (in plot)

Come soluzione (sera procrastinazione venerdì) ho fatto questo piccolo bambino:

Soluzione 1: se non si desidera reimpostare la leggenda

Rileva se v'è una leggenda e quante linee sono tracciate:

hline = findobj(gcf, 'type', 'line');
isThereLegend=(~isempty(findobj(gcf,'Type','axes','Tag','legend')))

if(isThereLegend)
    nLines=length(hline)/3
else
    nLines=length(hline)
end

Per ogni linea trovare le maniglie di destra e fare le cose per quella linea (ma vale anche per la corrispondente linea leggenda)

for iterLine=1:nLines
    mInd=nLines-iterLine+1
    if(isThereLegend)
        set(hline([(mInd*2-1) (mInd*2) (2*nLines+mInd)]),'LineWidth',iterLine) 
    else
    set(hline(mInd),'LineWidth',iterLine)     
    end
end

In questo modo ogni linea i-th con la width=i e qui si può aggiungere la proprietà automatizzato che cambia;

Soluzione 2: Keep it simple

sbarazzarsi della leggenda, prendersi cura delle linee, leggenda reset.

legend off
hline = findobj(gcf, 'type', 'line');
nLines=length(hline)

for iterLine=1:nLines
    mInd=nLines-iterLine+1
    set(hline(mInd),'LineWidth',iterLine)     
end
legend show

Questo potrebbe non essere adatto a situazioni in cui la leggenda deve essere collocato in un luogo speciffic etc.

È anche possibile fare clic destro sulla linea nel visualizzatore, e modificare le proprietà lì. Questo cambia anche la voce corrispondente 'leggenda' (almeno lo fa in 2014b).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top