Verfasst am: 08.03.2020, 22:40
Titel: Achsenbeschriftung mit Kommas statt Punkten
Guten Tag,
ich habe ein kleines Problem mit meinen Matlab-Plots.
Und zwar habe ich für meine Studienarbeit alle Schaubilder mit Matlab Skripten erstellt.
Nun habe ich den Hinweis erhalten, dass ich bitte die Achsenbeschriftungen der Schaubilder in meiner Ausarbeitung nach deutschem Standard, und demnach einer Abtrennung der Dezimalen mit einem Komma, ausführen soll.
In den Matlab-eigenen Einstellungen habe ich dazu nichts gefunden.
Durch eine kurze Recherche im Internet kam ich unter anderem auf folgende Zeilen:
Das funktioniert insofern, dass mir die Achsenbeschriftungen nun mit Kommas getrennt sind. Das Blöde ist nur, dass die Beschriftung (also die Zahlen) an sich nicht mehr stimmen.
Ein Beispiel habe ich angehängt.
Mit diesem Problem dürfte ich bei wissenschaftlichen Arbeiten wahrscheinlich nicht allein sein. Kann mir jemand von euch weiterhelfen? Hat jemand bereits ein funktionierendes Skript geschrieben? Ich habe auch zwei bei Google weit oben angezeigte selbst geschriebene Funktionen ausprobiert, welche allerdings auch nicht funktioniert haben.. Ich denke die waren noch für ältere Matlab-Versionen.
Schon einmal vielen Dank und einen guten Start in die Woche.
Eine kleine Anmerkung noch:
Das Problem scheint nur in den gespeicherten Plots als *.jpg und *.png aufzutreten.
In den gespeicherten *.fig Dateien scheint alles zu passen..
ich würde immer XTick und XTickLabel zusammensetzen, ebenso YTick und YTickLabel.
Wenn das Problem nur beim Export nach .png oder .jpg auftritt, wäre eine interessante Frage: wie exportierst du?
Am einfachsten ist die Unterstützung immer mit einem komplett reproduzierbaren Beispiel.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Das mit dem reproduzierbaren Beispiel ist so eine Sache..
Das Skript habe ich mir beim Einlesen und Verarbeiten der Daten ziemlich hingeschustert. Es tut aber auf jeden Fall was es soll.
Das Plotten der Daten ist aber ganz "normal" da werden zwei Spalten einer Matrix als Array gespeichert und diese über x und y aufgetragen.
Exportiert wird folgendermaßen als JPEG, fig und PNG:
NeueDatei.. ist dabei der Dateiname inklusive Pfad als ein String.
Falls das etwas mit dem Abspeichern an sich zu tun hat:
Wenn ich die Grafiken als .jpg exportiere, sind sie etwas "verpixelt". Es hat wie Wolken um die Kurven rum wenn man mit einem geeigneten Bildschirm nah genug ranzoomt.
Liegt das an meiner Art zu exportieren, oder an der jpg Bildkomprimierung?
Bei den png habe ich das nicht. Diese Unschärfen sind auch der einzige Grund, warum ich überhaupt zusätzlich als png exportiere.
Hier ist nun mal der gesamte Code dieses Scripts angehängt. Ich hänge auch noch eine Datei an, anhand der man das Zeichnen des Schaubilds ausprobieren kann.
In dem kommentierten Bereich kann man dann die Modifikation Trennung mit Punkt oder Komma ein- oder ausschalten.
Bitte lyncht mich nicht für meine Programmierung, ich hatte vor dieser Arbeit noch nie etwas mit Matlab zu tun.
Nach dem Starten des Skripts einfach den Ordner anwählen (nicht öffnen) in dem die angehängte csv-Datei liegt. Anschließend werden die jpg, png und fig Dateien in erstellten Ordnern in dem ausgewählten Ordner abgelegt.
Code:
closeall;
AusgewaehlterOrdner = uigetdir(); %Ordner auswählen in dem die Dateien liegen
AlleDateienimOrdner = dir(fullfile(AusgewaehlterOrdner, '*.csv')); %Ausgewählter Ordner wird geöffnet und Dateien aufgelistet
AlleDateinamen = {AlleDateienimOrdner.name}; %Alle Dateinamen werden aufgelistet
AnzahlcsvDateien=numel(AlleDateinamen); %Anzahl von .csv-Dateien wird abgefragt
GesamtZeit = 0;
for Laufindex=1:AnzahlcsvDateien %Für so viele *.csv-Dateien wie es gibt das Nachfolgende ausführen
tic;
ZeitEinzeln = 0;
Testobordner = {AlleDateienimOrdner.isdir}; %liest in der Spalte des Struct aus ob ein Ordner vorliegt oder nicht
Ordnerodernicht = Testobordner{Laufindex}; %umwandeln von Cell in logical
if Ordnerodernicht == 0 %nur für Dateien ausführen die keine Ordner sind(sollten aber weil nur .csv-Dateien angezeigt werden, sowieso keine Ordner sein)
EinzelnerDateiname = AlleDateinamen{Laufindex}; %Name der Datei
Dateipfad = {AlleDateienimOrdner.folder}; %Pfade aller Dateien
Pfad = Dateipfad{Laufindex}; %Pfad der aktuellen Datei
gesamt = [Pfad '\' EinzelnerDateiname]; %Pfad und Dateiname verbunden
Messwerte = importdata(gesamt); %Messwerte extrahieren
NameohneEndung = EinzelnerDateiname(1:end-4); %.csv abschneiden
%Matrix aus Messdaten erzeugen
Matrix=Messwerte.data;
%Spalten/Achsen benennen
Zeit = Matrix(:,1);
Anregung = Matrix(:,2);
Antwort = Matrix(:,3);
%Name der neuen Dateien
NamemitJPG = [NameohneEndung '.jpg'];
NamemitFig = [NameohneEndung '.fig'];
NamemitPNG = [NameohneEndung '.png'];
%Ordner für Speicherorte
ZielpfadSchaubild = [AusgewaehlterOrdner '\Fig-Dateien\']; %Später Ordner "Fig-Dateien" in gewähltem Ordner erstellen
ZielpfadJPG = [AusgewaehlterOrdner '\JPEG Bilder\']; %Später Ordner "JPEG Bilder" in gewähltem Ordner erstellen
NeueDateiJPEG = [ZielpfadJPG NamemitJPG]; %Dateiname und Endung an Pfad anhängen
NeueDateiFig = [ZielpfadSchaubild NamemitFig]; %Dateiname und Endung an Pfad anhängen
NeueDateiPNG = [ZielpfadJPG NamemitPNG];
%Speicherorte erstellen
if ~isfolder(ZielpfadJPG) mkdir(ZielpfadJPG); %Ordner für Bilder erstellen falls nicht vorhanden
end if ~isfolder(ZielpfadSchaubild) mkdir(ZielpfadSchaubild); %Ordner für .fig-Dateien erstellen falls nicht vorhanden
end
%Ende und Meldungen
closeall;
ZeitEinzeln = toc;
MeldungEinzeln = ['Datei ', EinzelnerDateiname, ' wurde erfolgreich bearbeitet.'];
% disp(ZeitEinzeln); % Kann man sich anzeigen lassen, wenn man will.
disp(MeldungEinzeln);
GesamtZeit = GesamtZeit + ZeitEinzeln;
end end
MeldungEnde = ['Alle .csv-Dateien im ausgewählten Ordner wurden bearbeitet. Zeitdauer in s: '];
disp(MeldungEnde);
disp(GesamtZeit);
Edit: Ich habe gerade bemerkt, dass ich CSV-Dateien hier im Forum nicht anhängen kann..
Das ist ein Link zu meiner Dropbox in der ich die Datei temporär einmal abgelegt habe.
Edit2: Ich habe den Dropbox Link mal rausgenommen und die Datei einfach gezippt zum Anhängen.
Ich will nicht ausschließen, dass es einfachere Möglichkeiten gibt ;)
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ich habe auch gerade angefangen mit Matlab zu arbeiten. Dabei hatte ich das gleiche Problem, wie es oben schon beschrieben wurde. Die Lösung von Harald hat mir dabei geholfen. Allerdings stehe ich jetzt vor einem weiteren Problem.
Ich würde gerne zusätzlich noch die Zahlen an den Achsen auf zwei bzw. drei Stellen nach dem Komma runden. Hiermit habe ich es bereits versucht:
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.