GUI: come creare un grafico 3d?

di il
5 risposte

GUI: come creare un grafico 3d?

Buongiorno a tutti!
Sto creando una GUI in Matlab che mi permetta di far partire una function e fino qui non ci sono problemi. Alla fine vorrei veder visualizzato il grafico all'interno della GUI iniziale. Usando anche la guida on line non capisco come collegare le variabili in uscita dalla funzione iniziale per poter creare il grafico nella GUI.
Qui sotto metto uno stralcio del codice relativo al passaggio in questione!
Grazie in anticipo a tutti quelli che mi aiuteranno!

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[csNS_fin,csEO_fin,Zeta_fin] = Seriale_v17;


% --- Executes during object creation, after setting all properties.
function graphicPanel_CreateFcn(csNS_fin,csEO_fin,Zeta_fin,hObject, eventdata, handles)
% hObject    handle to graphicPanel (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
graphicPanel_CreateFcn = P;

    plot3(csNS_fin,csEO_fin,Zeta_fin,'-ok','LineWidth',2,...
                'MarkerEdgeColor','g',...
                'MarkerFaceColor',[.0 .60 .0],...
                'MarkerSize',6);
    xlabel('displacements Norh-South [m]');
    ylabel('displacements East-West [m]');
    zlabel('depth[m]');
    legend('Chain location');
    grid on;
    axis tight;
% Hint: place code in OpeningFcn to populate graphicPanel

5 Risposte

  • Re: GUI: come creare un grafico 3d?

    Innanzi tutto qualche domanda:
    [*] che tipo di oggetto è graphicPanel"?
    [*] non viene generato nessun messaggi di errore relativo alla definizione della funzione "graphicPanel_CreateFcn(csNS_fin,csEO_fin,Zeta_fin,hObject, eventdata, handles)"? La presenza dei parametri "csNS_fin,csEO_fin,Zeta_fin" dovrebbe essere segnalata come "non corretta"
    [*] all'interno della funzione "graphicPanel_CreateFcn":
    [*][*]cosa è "P"?
    [*][*] qual è il significato dell'istruzione "graphicPanel_CreateFcn = P"?

    Fatte salve le precedenti domande, il problema è, molto probabilmente, dovuto al fatto che hai inserito le istruzioni per la generazione del grafico nella funzione "graphicPanel_CreateFcn".

    Dalla porzione di codice che hai inserito non si capisce quale tipo di "oggetto" sia "graphicPanel", sono portato ad immaginare che si tratti di "axes".

    La funzione "CreateFcn" di ogni oggetto inserito all'interno di una GUI viene eseguita al momento dell'apertura della GUI stessa (vedi commento creato automaticamente
    % --- Executes during object creation, after setting all properties.
    
    Questo implica che le tue istruzioni per la creazione del grafico vengono invocate all'apertura della GUI, prima che tu possa premere il pushbutton che lancia la funzione "Seriale_v17" la quale genera gli input per il grafico.

    Per generare il grafico usando gli output della funzione "Seriale_v17" potresti, per esempio:

    [*] spostare le istruzioni che hai inserito nella funzione "Seriale_v17" direttamente nella callback "pushbutton1_Callback", subito dopo la chiamata alla funzione "Seriale_v17"
    [*] aggiungere, per esempio, un pushbutton ed inserire le istruzioni per il plot nella sua calback.
    In questo caso, per passare i dati generati dalla funzione "Seriale_v17" nella callback "pushbutton1_Callback" alla callback del pushbutton. potresti utilizzare la funzione "guidata".
    Con la funzione guidata", infatti, puoi memorizzare dei dati all'interno della struttura "handles" che viene passata in input ad ogni callback.

    Hope this helps.
  • Re: GUI: come creare un grafico 3d?

    To ask_raf

    GraphicPanel è come hai ipotizzato un oggetto axes, io l'avevo rinominata e nel copiarla non l'ho corretta.

    i parametri "csNS_fin,csEO_fin,Zeta_fin non mi danno problemi inseriti in "graphicPanel_CreateFcn(csNS_fin,csEO_fin,Zeta_fin,hObject, eventdata, handles)", semplicemente non li considera.

    P era un tentativo mal riuscito di dare un nome al grafico.

    Grazie mille per la risposta, nonostanete le mie imprecisioni mi hai risolto molti dubbi!
  • Re: GUI: come creare un grafico 3d?

    Non c'è di che
    Sei quindi riuscito a creare correttamente il grafico?

    Per dare un titolo al grafico puoi provare ad usare la funzione "title".

    Hope this helps.
  • Re: GUI: come creare un grafico 3d?

    ask_raf ha scritto:


    Non c'è di che
    Sei quindi riuscito a creare correttamente il grafico?

    Per dare un titolo al grafico puoi provare ad usare la funzione "title".

    Hope this helps.

    Si sono riuscito a sistemare il codice...ora ho un problema con la uitable associata al grafico!
    Però il grafico è rappresentato nel modo corretto! Proverò anche con la funzione "title"! Gentilissimo!
  • Re: GUI: come creare un grafico 3d?

    Qual è il problema con la uitable?
Devi accedere o registrarti per scrivere nel forum
5 risposte