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

Gespeichertes Bild schneidet Text ab

 

ND1988
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2016, 11:51     Titel: Gespeichertes Bild schneidet Text ab
  Antworten mit Zitat      
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');


Danke
ND1988

circle_10_50_1_100_Kontur.png
 Beschreibung:
gespeichertes Bild

Download
 Dateiname:  circle_10_50_1_100_Kontur.png
 Dateigröße:  48.28 KB
 Heruntergeladen:  282 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: 03.02.2016, 16:23     Titel: Re: Gespeichertes Bild schneidet Text ab
  Antworten mit Zitat      
Hallo ND1988,

Möchtzest Du den Text nun rechts oder links stehen haben? Die Antwort ist für beide Fälle gleich aufwändig.

Code:
kontplot=figure('Units', 'normalized', 'Position', [0.2, 0.1, 0.8, 0.35]);
     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', ...
   'VerticalAlignment', 'left');
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
...
 

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.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2016, 16:38     Titel:
  Antworten mit Zitat      
Hi!
Danke für die Antwort.

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


Dennoch passt das Ergebnis in dem abgespeicherten Bild nicht Sad

Grüße
ND1988

circle_10_50_1_200_Kontur.png
 Beschreibung:

Download
 Dateiname:  circle_10_50_1_200_Kontur.png
 Dateigröße:  50.5 KB
 Heruntergeladen:  268 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 04.02.2016, 08:29     Titel:
  Antworten mit Zitat      
Einfach mehrere Subplots erstellen, ein eines den Text einfügen und die restlichen mit einem plot überspannen?

Also z.B.
Code:
x = 1:0.5:50;
y = sin(x);
vbavg = 100;

subplot(1,4,1);
plot(0,0,'w');
set(gca,'XTick', []);
set(gca,'YTick', []);
str = {['Set speed of laser to: ']
    [num2str(ceil(vbavg)) ' mm/s']};
TextH = text(0.01, 0.5, str, 'HorizontalAlignment', 'center');

subplot(1,4,2:4);
plot(x,y, 'k')
 


Für mehr Vorschläge müsstest du mal ein Minimalbeispiel posten (= lauffähig!).
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
ND1988
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.01.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2016, 09:12     Titel:
  Antworten mit Zitat      
Guten Morgen,

die Idee ist mir gestern vor dem schlafen gehen auch noch gekommen.
Aber da warst du dann schneller in der Ausführung Smile
Hab den Code noch ein wenig angepasst und jetzt bekomme ich das was ich benötige Smile
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');

subplot(1,3,2:3);
plot(x,y, 'k')
axis equal
print(kontplot, ['AutoProg/' '_Kontur'],'-dpng');

Wie in den angehängten Bilder schaut das ganze dann aus.
Vielen Dank für die Hilfe!
ND1988

Kontur.png
 Beschreibung:
Lauffähig

Download
 Dateiname:  Kontur.png
 Dateigröße:  15.33 KB
 Heruntergeladen:  279 mal
circle_10_50_1_100_Kontur.png
 Beschreibung:
Original

Download
 Dateiname:  circle_10_50_1_100_Kontur.png
 Dateigröße:  53.87 KB
 Heruntergeladen:  301 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: 04.02.2016, 11:56     Titel:
  Antworten mit Zitat      
Hallo ND1988,

subplot macht eigentlich nichts anderes als ein axes an einer bestimmten Position zu erstellen.

Ich hatte "Vertical" und "Horizontal" verwechselt.

Code:
 FullH = axes('Units', 'normalized', 'Position', [0,0,1,1], ...
                    'Visible', 'off');
           TextH = text(0.01, 0.5, str, 'HorizontalAlignment', 'left');  % Statt 'center'
           Ext = get(TextH, 'Extent');
           Width = Ext(1) + Ext(3) + 0.01;  % Rechter Rand des Textes plus Leerraum
           % OuterPosition statt Position:
           AxesH = axes('Units', 'normalized', 'OuterPosition', [Width, 0.1, 1-Width-0.01, 0.8]);
 

Gruß, Jan
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.