Due fit nello stesso grafico

di il
6 risposte

Due fit nello stesso grafico

Ciao a tutti, ho due fit nello stesso grafico (gaussiana e gaussiana a 2 picchi), questo il codice che ho scritto:
eVcIpicco=eVc(:,1:20);
      ckxfitIpicco=ckxfit(:,1:20);  
      [myfitga1,god1]= fit(eVcIpicco.',ckxfitIpicco.','gauss1');
      [myfitga2,god2]= fit(eVcIpicco.',ckxfitIpicco.','gauss2');
   figure (5)
plot5=figure (5);
set(plot5, 'Visible', 'off');
plot(myfitga1,eVcIpicco,ckxfitIpicco); hold on;
plot(myfitga2,eVcIpicco,ckxfitIpicco); 
xlabel('Energia (eV)');
ylabel('Conteggi relativi');
   legend ('Dati','Fit gaussiano','Fit 2 gassiane');
    title('Fit gaussiano primo picco');
    axis([282 288 0 0.06]);
   hold off;
Il codice fitta, ma ho 2 problemi nel grafico http://i63.tinypic.com/1zu3k5.pn

cioè :

1. I due fit mi vengono fatti dello stesso colore (vorrei invece colori diversi per distinguerli)
2. Nella legenda il fit a 2 gaussiane viene riportato col pallino blu (che è sbagliato, in quanto il fit a 2 gaussiane è una linea, che in questo caso è rossa come il fit a 1 gaussiana, ma dovrebbe venirmi di un altro colore )

Qualcuno può aiutarmi a risolvere?
Grazie

6 Risposte

  • Re: Due fit nello stesso grafico

    Hai provato a settare il colore e lo stile nelle chiamate alla funzione "plot"?

  • Re: Due fit nello stesso grafico

    Ciao, innanzitutto grazie... si avevo fatto delle prove per settare il colore (però non mi sono messo a scrivere tutte le prove fatte)... ti faccio un esempio:

    Scrivendo:
    plot(myfitga1,eVcIpicco,ckxfitIpicco,'r'); hold on;
    plot(myfitga2,eVcIpicco,ckxfitIpicco,'g'); 
    viene http://i67.tinypic.com/vrc01d.pn quindi come vedi i dati e il fit a 1 gaussiana hanno lo stesso colore, inoltre, anche i dati escono a linea continua (invece vorrei a punti)
  • Re: Due fit nello stesso grafico

    Al momento non riesco a aprire i grafici (invece di un link, puoi inserire i grafici direttamente nella domanda).
    Inoltre dovresti pubblicare i dati di input (od un esempio significativo).
  • Re: Due fit nello stesso grafico

    Ciao ho provato a scrivere:
    global fitresults
    
    .
    .
    .
    fitresults={}
    .
    .
    .
     eVcIpicco=eVc(:,1:20);
          ckxfitIpicco=ckxfit(:,1:20);  
         [myfitga1,god1]= fit(eVcIpicco.',ckxfitIpicco.','gauss1');
         [myfitga2,god2]= fit(eVcIpicco.',ckxfitIpicco.','gauss2');
         fitresults{1}=myfitga1;
         fitresults{2}=myfitga2;
       figure (5)
    plot5=figure (5);
    set(plot5, 'Visible', 'off');
    hold on;
    h1=plot((fitresults{1}),'r-',eVcIpicco,ckxfitIpicco,'bo'); 
    h2= plot( (fitresults{1}), 'r-' );
    h3=plot((fitresults{2}),'g-'); 
    xlabel('Energia (eV)');
    ylabel('Conteggi relativi');
       legend( [h1 h3], 'Dati', 'Gaussian 1 fit', 'Gaussian 2 fit');
        title('Fit gaussiano primo picco');
        axis([282 288 0 0.06]);
       hold off;
    
    ma mi da l'errore
    Error using horzcat
    Dimensions of matrices being concatenated are not consistent.

    Error in sp2sp3diff_Titantah (line 361)
    legend( [h1 h3], 'Dati', 'Gaussian 1 fit', 'Gaussian 2 fit');
    se commento quella riga, il programma funziona, mi fa il grafico e sul grafico viene come voglio, cioè i dati a pallini, il fit a una gaussiana rosso e il fit a 2 gaussiane verde.. ma la legenda è un po' incasinata (inoltre non posso personalizzare la legenda)

  • Re: Due fit nello stesso grafico

    Nella chiamata a "legend" hai specificato due handles (h1 h3), ma hai inserito tre stringhe ( 'Dati', 'Gaussian 1 fit', 'Gaussian 2 fit').

    Per semplificare la creazione dei grafici, perchè non provi a separare le chiamate alla funzione plot (una per ogni curva)?
  • Re: Due fit nello stesso grafico

    Ho risolto così:
    fitresults{1}=myfitga1;
         fitresults{2}=myfitga2;
       figure (5)
    plot5=figure (5);
    set(plot5, 'Visible', 'off');
    hold on;
    plot((fitresults{1}),'r-',eVcIpicco,ckxfitIpicco,'b*'); 
    legend_Ipicco{1}='Dati';
    legend_Ipicco{2}='Gaussian fit';
    plot((fitresults{2}),'g-'); 
    legend_Ipicco{3}='Gaussian 2 fit';
    xlabel('Energia (eV)');
    ylabel('Conteggi relativi');
       legend(legend_Ipicco);
Devi accedere o registrarti per scrivere nel forum
6 risposte