Verfasst am: 02.10.2015, 13:51
Titel: Grafikeigenschaften nach Grafik editor übernehmen
Hallo,
mein Problem besteht oft in der Feinanpasssung von Grafiken. So dauert es ungemein lang diese wirklich so hinzubekommen, wie ich sie letztendlich haben möchte, wenn ich dies per Code generiere.
Mit dem Grafik editor geht dies recht fix, allerdings dann eben jedes mal neu und nicht immer identisch.
Man kann ja den Code generieren nachdem man eine Grafik / Figure editiert hat.
Kann ich hierraus irgendwie die Eigenschaften übernehmen?
Verfasst am: 04.10.2015, 16:10
Titel: Re: Grafikeigenschaften nach Grafik editor übernehmen
Hallo PHEV,
Zitat:
Kann ich hierraus irgendwie die Eigenschaften übernehmen?
Diese Frage ist noch nicht klar. Welche Eigenschaften möchtest Du woraus übernehmen?
Welche Matlab-Version verwendest Du?
Hast Du Dich schon mal in Matlab's FileExchange umgesehen? Dort gibt es einige Funktionen, um Grafiken für Publikationen aufzuhübschen.
Angenommen ich erstelle eine Grafik. Diese sieht dann zu 95% so aus wie ich es möchte. Nun ändere ich im Grafikeditor manuell noch die Position oder Größe oder sonstiges. Dies würde ich gerne so speichern, dass jedes mal wenn das Programm plottet, die Grafik genau so ausgegeben wird. Oder ich zumindest die Koordinaten auslesen kann, damit ich nicht Jahre rumprobieren muss.
Wo finde ich diese File Exchange? Meinst du die Skripte Ecke?
Nun ändere ich im Grafikeditor manuell noch die Position oder Größe oder sonstiges. Dies würde ich gerne so speichern, dass jedes mal wenn das Programm plottet, die Grafik genau so ausgegeben wird. Oder ich zumindest die Koordinaten auslesen kann, damit ich nicht Jahre rumprobieren muss.
In Figures gibt es File --> Generate Code.
In den Plot Tools, mit
inspect
oder mit
get
kann man einzelne Graphik-Elemente ansprechen und deren Eigenschaften sehen.
Zitat:
Ist exakt nicht das was ich suche und oder nach dem ich gefragt habe
Du hast gefragt, was File Exchange ist (14:33). Wenn du danach googelst, ist es der erste Treffer.
Bevor es hier Missverständnisse gibt: Du kannst "FileExchange" sehr einfach mit einer Internetsuchmaschine finden, zur Not hilft das zusätzliche Stichwort "Matlab". Es passiert im Forum sehr häufig, dass Leute nach Dingen fragen, die man in Sekundenbruchteilen findet, wenn man nur auf die Idee kommt selbst danach zu suchen. Das ist nichts ungewöhnliches: Man hat das Problem selbst zum allerersten mal und denkt genau deswegen nicht daran, dass Millionen andere Leute das Problem schon viel früher hatten und es längst gelöst worden ist. Genau für diese Fälle ist LMGTFY da. Und wenn Du daran denkst, dass Moderatoren den Tipp doch einfach mal selbst zu suchen, über Jahre hinweg fast jeden Tag geben, wird es vielleicht klar, dass dies als augenzwinkernder Hinweis gedacht ist.
danke für deine Antwort. Wie ich bereits geschrieben habe, sind mir diese funktionen bekannt. Ich weiß aber nicht, wie ich dass dann einfach als automatisierten Code übernehmen kann. Sprich wie ich den generierten Code benutze. In diesem Code finde ich leider nichts über koordinaten etc.
Beispiel:
Code:
function createaxes(Parent1, X1, Y1, X2, Y2, X3, Y3, X4, Y4)
%CREATEAXES(PARENT1, X1, Y1, X2, Y2, X3, Y3, X4, Y4) % PARENT1: axes parent % X1: vector of x data % Y1: vector of y data % X2: vector of x data % Y2: vector of y data % X3: vector of x data % Y3: vector of y data % X4: vector of x data % Y4: vector of y data
% Auto-generated by MATLAB on 07-Oct-2015 15:50:03
% Create axes
axes1 = axes('Parent',Parent1,...
'Position',[0.03489583333333330.06812933025404160.9416666666666670.890300230946882]);
%% Uncomment the following line to preserve the X-limits of the axes % xlim(axes1,[0 55]);
%% Uncomment the following line to preserve the Y-limits of the axes % ylim(axes1,[0 1.03]); box(axes1,'on');
grid(axes1,'on');
hold(axes1,'all');
Hier habe ich die Position etc so angepasst, dass es für einen eps export perfect ist.
Mit den Grundeinstellungen bekomme ich das auch nach Tagen nicht hin. Auch nicht mit der Hilfe hier im Forum.
Wenn ich den Code in meine Figure umgebung kopiere funktiniert nichts.
Was ich möchte ist:
Ich plotte eine Grafik mit zich voreinstellungen. Dann sieht sie aber immer noch nicht so aus wie ich sie haben möchte um sie zu exportieren.
Also editiere ich diese so dass sie passt.
Das möchte ich dann automatisch ausgeben.
Ich bin auch weniger an dem Interessiert wie es auf dem Bildschirm aussieht, als wie es als PDF aussieht.
Der PDF export bspw. klappt auch kaum. Ich plotte eine Figure mit einer Tabelle. Die Figure ist scharf, die Tabelle total verpixelt dargestellt. Mit eps export und dann das eps in pdf umwandeln, was super umständlich ist, gehts.
Mit dem Befehl sieht es einfach nur schlecht und unscharf aus:
Ich möchte die Abbildung einfach als PDF im vektor format bzw. möglichst hoch aufgelöst bei kleiner größe. Dabei soll die Abbilung einfach das gesamte PDF dokument ohne ränder einnehmen. Ich erreiche dies, in dem ich im Grafik editor manuell die Ränder der Grafik an den Bildschirm rand ziehe. Aber automatisiert bekomme ich dies nicht hin.
Insbesondere, wie ich es schon mehrfach in einem anderen Thread erwähnt habe, bereitet mir die zweite Abbildung in der Abbilung, genauer die Tabelle, probleme. Diese kann ich zwar schön nach dem Plot noch verschieben ect. ich hätte es aber lieber als ein Bild, was durch das plotten zusammen gehört.
"Error: Function definitions are not permitted in this context."
wenn ich es ausführe. Ich habe auch keine Ahnung ob ich erst die Abbildung öffnen muss, dann die Funktion ausführe, oder umgekehrt. Beides funktioniert nicht.
Hier mein Plot:
Code:
CURVE=xtVacuumSupplyPressure2HSBa(Start_time: length(xtVacuumSupplyPressure2HSBa)) ;
T=Offset(1: length(CURVE)) ; %generates time vektor in seconds with the length of the measured value
plot(T,CURVE,'b','LineWidth',2) title('Performance curve'); % creates a title above the plot axis([0550.01.030]); % the function axis([x1 x2 y1 y2]) scales the axis between the sections x1-x2 and y1-y2 xlabel('time [s]'); % labels the x- axis ylabel('pressure [bar]'); % labels the y-axis
Create axes hold on;
grid% generates a grid on the plot
plot(t_500mbar,p_500mbar,'r.','MarkerSize',15); % creates a bullet point plot(t_700mbar,p_700mbar,'r.','MarkerSize',15); % creates a bullet point plot(t_900mbar,p_900mbar,'r.','MarkerSize',15); % creates a bullet point
f = figure(1);
set(f,'Units', 'normalized', 'outerposition',[0011]);
dat = {' Time 1 to -500mBar', 6.0 , num2str(xtTime_2_Referenz_point_500mbar), '[s]';...
' Time 2 to -700mBar', 13.0 , num2str(xtTime_2_Referenz_point_700mbar), '[s]';...
' Time 3 to -900mbar', 55.0 , num2str(xtTime_2_Referenz_point_900mbar), '[s]';...
' Total vacuum after 55s', -930, num2str(TotalVacuum_after_55seconds), '[mbar]';...
' Barometric Pressure', 1000, num2str(BarometricPressure), '[mbar]';...
' Oil Temperature', 100.00 , num2str(Temp_Oil), '[C°]'};
columnname = {'Parameter', 'Value should', 'Value is','Units'};
columnformat = {'char','char', 'numeric', 'char'};
t = uitable('Units','normalized','Position',... [0.70.70.250.16], 'Data', dat,...
'ColumnName', columnname,...
'ColumnFormat', columnformat,...
'RowName',[]);
Ich plotte eine Grafik mit zich voreinstellungen. Dann sieht sie aber immer noch nicht so aus wie ich sie haben möchte um sie zu exportieren.
Also editiere ich diese so dass sie passt.
Auf die Gefahr, dass es nervt: bitte so genau wie möglich sagen, was nicht passt und wie es passend gemacht wird.
Zitat:
Der PDF export bspw. klappt auch kaum. Ich plotte eine Figure mit einer Tabelle. Die Figure ist scharf, die Tabelle total verpixelt dargestellt.
Mit eps export und dann das eps in pdf umwandeln, was super umständlich ist, gehts.
Wenn du sagen kannst, wie du das genau machst, kann man dir vielleicht dabei helfen, das zu automatisieren.
Zitat:
Ich erreiche dies, in dem ich im Grafik editor manuell die Ränder der Grafik an den Bildschirm rand ziehe. Aber automatisiert bekomme ich dies nicht hin.
"Error: Function definitions are not permitted in this context."
Das könnte darauf hindeuten, dass du die Funktion unten an ein bestehendes Skript hinkopiert hast. Eine Funktion sollte aber in einer eigenen Datei bzw. einem eigenen Editor-Fenster stehen.
Ich denke ich habe noch ein verständnis problem zwischen Ansicht im Browser fenster und datei export als pdf etc. Ich weiß das es unterschiedlich ist, aber nicht wie ich es handhaben muss. Mir ist nur der PDF export wichtig und das Browerfenster ist nice to have, bzw soll grob stimmen.
Ich habe mal screen shot angefügt die beschreiben wie es wann aussieht.
Danke für die Hilfe!
[EDITED, Jan, Bitte keine kompletten Nachrichten quoten, Danke]
direkt eps 2 pdf aus m-file.JPG
Beschreibung:
So sieht es aus wenn ich direkt aus dem m-file ohne manuelles zutun plotte
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
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.