Verfasst am: 03.02.2016, 11:51
Titel: Gespeichertes Bild schneidet Text ab
Hallo Zusammen,
ich habe ein Problem mit meinem Plot.
Ich möchte, dass bei der gespeicherten Datei der Text rechts (am besten wäre zwar links aber damit kann ich mich abfinden) neben der geplotteten Funktion steht.
Leider wird der Text aber angeschnitten wie es in dem angehängten Bild zu sehen ist.
Wo liegt der Kniff?
Code:
kontplot=figure('Units', 'normalized', 'Position', [0.2, 0.1, 0.8, 0.35]);
plot(x,y, 'k'); % plot curve axis equal;
ylim([-A*2 A*2]);
title('Ausschnitt aus der Kontur der Schweißnaht'); % plot lable xlabel('Vorschub- bzw x-Richtung'); % x-axis label ylabel('y-Richtung'); % y-axis label
xl=get(gca,'XTickLabel'); % fit the units x-axis
xl(size(xl,1)-2,1)= {'mm'};% fit the units x-axis set(gca,'XTickLabel', xl);% fit the units x-axis
yl=get(gca,'YTickLabel');% fit the units y-axis
yl(size(yl,1)-2,1)= {'mm'};% fit the units y-axis set(gca,'YTickLabel', yl);% fit the units y-axis
str = {['Name: ' name '.dxf']% Define string for text ['length of welding: ' num2str(weldlength) ' mm'] ['width of welding: ' num2str(width) ' mm'] ['linear feedrate: ' num2str(linearfeedrate) ' mm/s'] ['frequency: ' num2str(frequency) ' Hz'] ['welding time: ' num2str((t-n)*1000) ' ms'] ['overlap: ' num2str(o) ' %'] [''] ['Set speed of laser to: '] [num2str(ceil(vbavg)) ' mm/s']};
limy=get(gca,'YLim'); % get position for text input
limx=get(gca,'XLim'); % get position for text input text(limx(2)+.1,limy(2)-1, str);
print(kontplot, ['AutoProg/' name '_' num2str(weldlength) '_' num2str(linearfeedrate) '_' num2str(width) '_' num2str(frequency) '_Kontur'],'-dpng');
Ich kann das zur Zeit nicht testen. Die Idee ist:
1. AXES erstellen über die ganze Figure
2. TEXT darin erstellen
3. Text-Breite messen
4. AXES für das Diagramm entsprechen 3. festlegen.
Ich musste den Code bisschen abändern, da sonst Matlab gemeckert hat:
Error using text
While setting the 'VerticalAlignment' property of 'Text':
'left' is not a valid value. Use one of these values: 'baseline' | 'top' | 'cap' | 'middle' | 'bottom'.
Glaube es ist sowieso links ausgerichtet.
Code:
str = {['Name: ' name '.dxf']% Define string for text ['length of welding: ' num2str(weldlength) ' mm'] ['width of welding: ' num2str(width) ' mm'] ['linear feedrate: ' num2str(linearfeedrate) ' mm/s'] ['frequency: ' num2str(frequency) ' Hz'] ['welding time: ' num2str((t-n)*1000) ' ms'] ['overlap: ' num2str(o) ' %'] [''] ['Set speed of laser to: '] [num2str(ceil(vbavg)) ' mm/s']};
FullH = axes('Units', 'normalized', 'Position', [0,0,1,1], ...
'Visible', 'off');
TextH = text(0.01, 0.5, str, 'HorizontalAlignment', 'center');
Ext = get(TextH, 'Extent');
Width = Ext(1) + Ext(3) + 0.01; % Rechter Rand des Textes plus Leerraum
AxesH = axes('Units', 'normalized', 'Position', [Width, 0.1, 1-Width-0.01, 0.8]);
plot(x,y, 'k', 'Parent', AxesH); % plot curve axis equal;
ylim([-A*2 A*2]);
title('Ausschnitt aus der Kontur der Schweißnaht'); % plot lable xlabel('Vorschub- bzw x-Richtung'); % x-axis label ylabel('y-Richtung'); % y-axis label
xl=get(gca,'XTickLabel'); % fit the units x-axis
xl(size(xl,1)-2,1)= {'mm'};% fit the units x-axis set(gca,'XTickLabel', xl);% fit the units x-axis
yl=get(gca,'YTickLabel');% fit the units y-axis
yl(size(yl,1)-2,1)= {'mm'};% fit the units y-axis set(gca,'YTickLabel', yl);% fit the units y-axis
die Idee ist mir gestern vor dem schlafen gehen auch noch gekommen.
Aber da warst du dann schneller in der Ausführung
Hab den Code noch ein wenig angepasst und jetzt bekomme ich das was ich benötige
Code:
kontplot=figure('Units', 'normalized', 'Position', [0.2, 0.1, 0.8, 0.35]);
x = 1:0.5:50;
y = sin(x);
vbavg = 100;
subplot(1,3,1);
axis equal
axis off
set(gca,'XTick', []);
set(gca,'YTick', []);
str = {['Set speed of laser to: '] [num2str(ceil(vbavg)) ' mm/s']};
TextH = text(0.25, 0.5, str, 'HorizontalAlignment', 'center');
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.