Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Simulink Grundlagen und Beispiele

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fehlerbereich von Daten farbig - area, fill, patch

 

NinaAbbi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2020, 18:28     Titel: Fehlerbereich von Daten farbig - area, fill, patch
  Antworten mit Zitat      
Hallo,
ich habe einen Datensatz und möchte den Fehlerbereich (der Werte auf der y-Achse) als farbigen Bereich darstellen. Hierfür habe ich die Daten geplottet und wollte mit area, fill oder patch den Bereich zwischen den zwei Funktionen (Daten + bzw. - Fehlerbereich) füllen. Hierbei treten verschiedene Probleme auf.
Bei area wird bei einer Verteilung um x=0 zusätzlich auch alles bis zur x-Achse ausgefüllt (area_um0.jpg). Wenn die Daten nicht um null liegen, geschieht das selbe nur sieht dies natürlich noch schlechter aus, da sich ein großer farbiger Kasten ergibt (area_nichtum0.jpg).
Bei fill sieht es hingegen aus als ob zwei Geraden +/-Fehlerbereich in dem plot liegen (fill_um0.jpg, fill_nichtum0.jpg).
Ich habe im Forum schon gesucht, das Problem aber nicht beheben können. Ich bin für jeden Tipp und jede Hilfe dabkbar. Viele Grüße und danke schon mal.

Code:

data=load (['C:\Users\testdata2.txt']);

%%
x1 = data(:, 2);
x2 = data(:, 2);
y1 = (data(:, 1) + 0.007);
y2 = (data(:, 1) - 0.007);
z1 = (data(:, 3) + 0.007);
z2 = (data(:, 3) - 0.007);

%% Versuch mit area
% YX-Plot
figure()
      area(x1, y1,'FaceColor',[0.8 0.8 0.8],'edgecolor', [0.8 0.8 0.8],'FaceAlpha',0.5)
      hold on
      area(x1, y2,'FaceColor',[0.8 0.8 0.8],'edgecolor', [0.8 0.8 0.8],'FaceAlpha',0.5)
      hold on
      p1 = plot(x1, data(:,1), '-+k')
      hold on

% YZ-Plot
figure()
      area(x1, z1,'FaceColor',[0.8 0.8 0.8],'edgecolor', [0.8 0.8 0.8],'FaceAlpha',0.5)
      hold on
      area(x1, z2,'FaceColor',[0.8 0.8 0.8],'edgecolor', [0.8 0.8 0.8],'FaceAlpha',0.5)
      hold on
      p1 = plot(x1, data(:,3), '-+k')
      hold on
     
%% Versuch mit fill oder patch
% YX-Plot
figure()
plot(x1, y1, x2, y2);
hold on;
filler = fill([x1; x2],[y1; y2], [0.8 0.8 0.8],'edgecolor', [0.8 0.8 0.8]);
hold on
p1 = plot(data(:, 2), data(:, 1), '-+k');

% YZ-Plot
figure()
plot(x1, z1, x2, z2);
hold on;
% 'patch' macht das gleiche
filler = fill([x1; x2],[z1; z2], [0.8 0.8 0.8],'edgecolor', [0.8 0.8 0.8]);
hold on
p1 = plot(data(:, 2), data(:, 3), '-+k');
 


P.S.: A1_geradheit_xy.pdf ist ein Beispiel wie es aussehen sollte.

A1_geradheit_xy.pdf
 Beschreibung:
so soll es eigentlich aussehen

Download
 Dateiname:  A1_geradheit_xy.pdf
 Dateigröße:  80.83 KB
 Heruntergeladen:  6 mal
fill_nichtum0.jpg
 Beschreibung:

Download
 Dateiname:  fill_nichtum0.jpg
 Dateigröße:  26.77 KB
 Heruntergeladen:  7 mal
fill_um0.jpg
 Beschreibung:

Download
 Dateiname:  fill_um0.jpg
 Dateigröße:  30.57 KB
 Heruntergeladen:  9 mal
area_um0.jpg
 Beschreibung:

Download
 Dateiname:  area_um0.jpg
 Dateigröße:  30.82 KB
 Heruntergeladen:  9 mal
area_nichtum0.jpg
 Beschreibung:

Download
 Dateiname:  area_nichtum0.jpg
 Dateigröße:  13.26 KB
 Heruntergeladen:  10 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 21.158
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.03.2020, 18:50     Titel:
  Antworten mit Zitat      
Hallo,

area scheint mir am geeignetsten. Grundsätzlich wie im ersten Beispiel "Create Area Graph" in der Doku, aber ohne Farbe für die unterste Kurve.

Code:
Y = [1, 5, 3;
     3, 2, 7;
     1, 5, 3;
     2, 6, 1];
figure
a = area(Y);
a(1).FaceColor = 'none';


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
NinaAbbi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2020, 11:49     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Rückmeldung. Leider löst das mein Problem nicht oder ioch bekomme es damit nicht hin. Hat noch jemand eine andere Idee. Das wäre mir eine große Hilfe.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.158
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.03.2020, 12:02     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Leider löst das mein Problem nicht oder ioch bekomme es damit nicht hin.

Das ist nicht sehr aussagekräftig. Je konkreter du sagst, was du weiter versucht hast und welche Probleme dabei aufgetreten sind, desto eher kann man dir helfen.
Wenn du dann noch einen Beispieldatensatz zur Verfügung stellst, kann man dir noch besser helfen.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
NinaAbbi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2020, 14:56     Titel:
  Antworten mit Zitat      
Hier die Testdaten (testdata2.txt), das hatte ich in der Tat schon beim ersten post vergessen. Sorry.
Nun noch was ich versucht habe.
Code:

% neuer Versuch mit area
Y1 = [(data(:, 1) - 0.007), data(:, 1) , (data(:, 1) +0.007);];

figure
    a = area(x1, Y1);
    a(1).FaceColor = 'none';
    hold on
    p1 = plot(x1, data(:,1), '-+b');
   
Y2 = [z1, data(:, 3) , z2;];

figure
    a = area(x1, Y2);
    a(1).FaceColor = 'none';
    hold on
    p1 = plot(x1, data(:,3), '-+b');
 


Vielen Dank soweit!

testdata2.txt
 Beschreibung:

Download
 Dateiname:  testdata2.txt
 Dateigröße:  1.78 KB
 Heruntergeladen:  6 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 21.158
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.03.2020, 16:03     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist, dass die Fläche "in die richtige Richtung" gehen muss. So sieht es gut aus, denke ich:
Code:
a = area(x1, [y2, repmat(0.014, size(y2))],'FaceColor',[0.8 0.8 0.8],'edgecolor', [0.8 0.8 0.8],'FaceAlpha',0.5);
a(1).FaceColor = 'none';


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 ;)
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2020 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.