WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Print

 

jonnes
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2011, 03:49     Titel: Print
  Antworten mit Zitat      
Hallo,

kann mir jemend sagen warum bei diese code nur den Graph
geschpeichert ohne Legend???
ich danke für jede Antwort


Code:
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton10 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=handles.axes1;  
a = gca;
printfig = figure('Visible','off');
info = get(a, {'Parent','Units','Position'});
set(a, 'Parent',printfig,'Units','Normalized','Position',[.1 .1 .8 .8]);
print(printfig,'-dpng','Grafik1');
hold on
set(a,'Parent',info{1},'Units',info{2},'Position',info{3});
close(printfig)


legend 1.png
 Beschreibung:

Download
 Dateiname:  legend 1.png
 Dateigröße:  21.14 KB
 Heruntergeladen:  491 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 24.01.2011, 15:55     Titel: Re: Print
  Antworten mit Zitat      
Hallo jonnes,
Zitat:
kann mir jemend sagen warum bei diese code nur den Graph
geschpeichert ohne Legend???

Ich weiss es nicht. Ich nehme an, die Legende hat ein Problem, wenn die FIGURE nicht sichtbar ist. Funktioniert es mit "figure('Visible', 'on')" ?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2011, 01:55     Titel:
  Antworten mit Zitat      
hallo,
danke für die Antwort

leider hat auch nicht funktionert.

ich jetzt so probiert aber geht auch nicht
kann jemend mir hilfen?
Code:
a=handles.axes1;  
a = gca;
printfig = figure('Visible','off');
info = get(a, {'Parent','Units','Position','legend'});
set(a, 'Parent',printfig,'Units','Normalized','Position',[.1 .1 .8 .8],'legend');
print(printfig,'-dpng','Grafik1');
hold on
set(a,'Parent',info{1},'Units',info{2},'Position',info{3},'legend');
close(printfig) ;
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.01.2011, 03:52     Titel:
  Antworten mit Zitat      
Hallo jonnes,

Wenn Du eine Legende im Plot haben möchtest, musst Du sie auch in die FIGURE kopieren. Du bewegst aber nur ein AXES-Objekt in die FIGURE. Setze doch bitte 'Visible' der FIGURE auf 'on', dann wprdest Du es auch direkt sehen können.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2011, 14:35     Titel:
  Antworten mit Zitat      
sorry
das klappt immer noch nicht.

Code:
a=handles.axes1;  
a = gca;
printfig = figure('Visible','on');
info = get(a, {'Parent','Units','Position'});
set(a, 'Parent',printfig,'Units','Normalized','Position',[.1 .1 .8 .8]);
print(printfig,'-dpng','Grafik1');
hold on
set(a,'Parent',info{1},'Units',info{2},'Position',info{3});
%close(printfig) ;
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.01.2011, 16:00     Titel:
  Antworten mit Zitat      
Hallo jonnes,

Zitat:
das klappt immer noch nicht.

Nein, natürlich klappt das nicht. Du kannst aber zumindest sehen, warum es nicht klappt, oder? Du fügst in der FIGURE gar keine Legend ein, also wird natürlich auch keine ausgedruckt.

Gehe doch mal Zeile für Zeile durch Deinen Code:
a = handles.axes1
Du erhälst den Handle der AXES aus dem Struct "handles".
a = gca
Du überschreibst den Handle in "a" sofort wieder mit dem Handle der aktuellen AXES (dann ist der vorherige Schritt überflüssig...)
printfig = figure('Visible','on');
Du erstellst eine neue FIGURE.
info = get(a, {'Parent','Units','Position'});
set(a, 'Parent',printfig,'Units','Normalized','Position',[.1 .1 .8 .8]);
Du bewegst das aktuelle AXES-Objekt in die neue FIGURE.
print(printfig,'-dpng','Grafik1');
Du speicherst die FIGURE als PNG.
Alles weitere ist für die Grafik irrelevant.

Also wird an keiner Stelle eine Legende produziert. Woher soll sie dann im Bild kommen?
Lösung: Füge einfach per LEGEND eine Legende ein.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2011, 22:40     Titel:
  Antworten mit Zitat      
hallo,
sorry ,
legend kommt von eine andere pushbuton,dasheist beim drücken wird den graph gezeichgt mit legend und hier ist noch mal den Code.

leider scheitert jede versuch ,ich bitte um jeder Hilfe?


Code:


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

try

set(hObject,'Enable','off')
pause(0.001)
val = get(handles.listbox1,'Value');
for n=1:length(val)
data(:,n) = cell2mat(handles.Data.(sprintf('Text%.0f',val(n)))(:,3));
dates(:,n) = cell2mat(handles.Data.(sprintf('Text%.0f',val(n)))(:,1));
end
co = get(handles.axes2,'Color');
plot(dates,data,'Color','m')
set(handles.axes2,'Color',co)

datetick


set(hObject,'Enable','on')
hold on
legend('Long Lokal',1) ;
 hold on
h = zoom ;
set(h,'Motion','horizontal','Enable','on');
set(gcf,'Color',('w'));
catch %#ok
set(hObject,'Enable','on')
%hold on
end



% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton11 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
a=handles.axes1;  
a = gca;
printfig = figure('Visible','off');
info = get(a, {'Parent','Units','Position'});
set(a, 'Parent',printfig,'Units','Normalized','Position',[.1 .1 .8 .8]);
print(printfig,'-dpng','Grafik2');
hold on
set(a,'Parent',info{1},'Units',info{2},'Position',info{3});
close(printfig) ;
 


20110129_212315.jpg
 Beschreibung:

Download
 Dateiname:  20110129_212315.jpg
 Dateigröße:  77.26 KB
 Heruntergeladen:  530 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.01.2011, 00:39     Titel:
  Antworten mit Zitat      
Hallo jonnes,

Du hast jetzt 4 mal den gleichen Code gepostet. Das ist keine effiziente Methode ein Problem zu beschreiben oder zu lösen.

Nachwievor sehe ich keinen Versuch von Dir die Legende in die Grafik einzufügen. Du hast aber an anderer Stelle per "legend('Long Lokal',1)" eine Legende erzeugen können. Wieso machst Du das nicht einfach auch direkt vor dem Abspeichern der Grafik?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2011, 19:38     Titel:
  Antworten mit Zitat      
hallo
danke für die Antwort,aber ich bin matlab anfänger

leider ich habe das immer noch nicht hingekriegt,
ich habe versucht ,ich weiss nicht wie ich das kriege.
vielen Dank für jede Antwort
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 01.02.2011, 02:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

Danke für die Antwort,aber ich bin matlab anfänger
leider ich habe das immer noch nicht hingekriegt,

Aber du hasst Jan seine Ratschläge auch nicht mal versucht umzusetzen, jedenfalls kann ich das aus deinem Code nicht erkennen. Hier ist ein Beispiel wie es für einen Plot funktioniert:
Code:

printfig = figure('Visible','off');
a = axes('Parent',printfig);
plot(1:10,rand(3,10),'Parent',a);
set(a, 'Parent',printfig,'Units','Normalized','Position',[.1 .1 .8 .8]);
legend(a,'data1','data2','data3');
title(a,'DAS IST MEIN PLOT','Color','red');
set(get(gca,'XLabel'),'String','X-DATA');
set(get(gca,'YLabel'),'String','Y-DATA');
print(printfig,'-dpng','Grafik2');
 


Falls du irgendwelche Daten z.B. die Legendenbeschriftungen nicht in dem Callback deines "Export"-Pushbuttons zur Verfügung hasst, d.h. dass diese nur in einem anderen Callback vorhanden sind, dann musst du sie mit in der handles-Struktur des Guis speichern und dann im "Export"-Callback wieder aufrufen:
Code:

% in deinem Callback "pushbutton6_Callback"
handles.legende = {'data1','data2','data3'}; % Legendenbeschriftungen
guidata(hObject,handles) % Abspeichern der neuen handles struktur

% in deinem Callback "pushbutton11_Callback"
...
plot(...);
% Extraktion der Legendenbeschiftung aus der handles-Struktur
legend(a,handles.legende{1},handles.legende{2},handles.legende{3});
....
 


So nun solltest du es aber selber hinbekommen...

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.