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

Deutschlandgrenzen in subplot einfügen

 

metronomy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2012, 13:11     Titel: Deutschlandgrenzen in subplot einfügen
  Antworten mit Zitat      
Hallo,

ich habe mir aus 3 netcdf-Dateien einen Subplot erstellt. Habe mir die Achsen, die Legende und weitere Einstellungen so wie ich möchte zurecht gebastelt. Alles easy.

Jetzt möchte ich über jede der 3 Subplots eine Deutschlandkarte legen, damit man alles richtig erkennen und zuordnen kann. Wie geht das?

Ich habs bisher mit

Code:

ax = worldmap([45 55],[5 16]);
land = shaperead('D:\DEU_adm1.shp','UseGeoCoords', true);
geoshow(ax, land,'FaceColor', 'none')


versucht, das bringt mir aber nur Fehlermeldungen wie

Code:
??? Error using ==> trimPolygonToQuadrangle>mergeEndToEndPairs at 228
Inconsistent polygon topology: Encountered a chain of more than two connecting pairs.

Error in ==> trimPolygonToQuadrangle>trimLongitudes at 94
    [lon, lat] = mergeEndToEndPairs(lon, lat, lonlim, tolSnap);

Error in ==> trimPolygonToQuadrangle at 45
[lat, lon] = trimLongitudes(lat, lon, lonlim, tolSnap);

Error in ==> applyProjection>applyForward at 67
                [lat, lon] = trimPolygonToQuadrangle( ...

Error in ==> doApplyProj at 31
        [x, y, savepts] = mproj.applyForward(mproj, mstruct, in1, in2, objectType);

Error in ==> applyProjection at 14
    outputs = doApplyProj(mproj, varargin{:});

Error in ==> eqdconic at 33
varargout = applyProjection(mproj, varargin{:});

Error in ==> geovec at 19
[x, y] = feval(mstruct.mapprojection, ...


Gibt es noch eine andere Möglichkeit Deutschlandgrenzen einzufügen? Vielleicht eine Kontur nur um die äußeren Datenpunkte ziehen, oder so?!?


lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 22.03.2012, 20:19     Titel:
  Antworten mit Zitat      
was die Kontur um die äußeren Punkten angeht, hast du es mit
Code:


versucht?
Private Nachricht senden Benutzer-Profile anzeigen
 
metronomy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 10:51     Titel:
  Antworten mit Zitat      
Hallo,

ersteinmal danke für deinen Hinweis. Ich habe es soeben ausprobiert. Da ich aber NaN-Werte in meinen Werten habe, funktioniert das leider nicht.

Eine Idee hatte ich jetzt noch: Die Lat und Lon -Werte aus dem Shape-Struct auslesen und eventuell als Linie plotten ?!

Wie kann man auf ein struct zugreifen?

VG
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 27.03.2012, 11:25     Titel:
  Antworten mit Zitat      
Hallo,

leider hab ich das toolbox nicht und ich weiss nicht genau wie deine Daten aussehen.
Das wäre vllt auch eine Möglichkeit
Code:


Gruß,

Hristo
Private Nachricht senden Benutzer-Profile anzeigen
 
metronomy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 14:23     Titel:
  Antworten mit Zitat      
Hallo,

das funktioniert leider nicht. Es gibt mir die Fehlermeldung aus:

Code:
??? Error using ==> convhull
Input points have invalid dimension.


Ich bin jetzt ein bisschen weitergekommen: Ich habe die Lat und Lon-Koordinaten aus dem Shape-Struct ausgelesen.
Code:

Data = shaperead('D:\DEU_adm0.shp','UseGeoCoords', true);
Lon=Data.(Fields{3});
Lat=Data.(Fields{4});


und auch die Abbildung in einzelner Form hinbekommen:

Code:
axes('Nextplot','add');
contourf(lon_org, lat_org, Daten(:,:,i)),shading flat;
h=plot(Lon,Lat);
set(h,'LineWidth', 3)


Soweit so gut. Aber wenn ich das Gleiche versuche in ein subplot einzubasteln, gibts Probleme.

Code:

i=1;
Daten=random(10,10,4);

axes('Nextplot','add');
subplot(1,3,1);contourf(lon_org, lat_org, Daten(:,:,i)),shading flat; h=plot(Lon,Lat);


Da wird der contourf Plot vom "Deutschlandplot" überdeckt und ist nicht mehr sichtbar.

Gibts da vielleicht n Trick?
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 27.03.2012, 14:48     Titel:
  Antworten mit Zitat      
könntest du alle Daten mit rand und mit den entsprechenden Dimensionen geben damit ich etwas rumprobieren kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 27.03.2012, 14:53     Titel:
  Antworten mit Zitat      
warte, kann es sein dass du einfach die befehle für die subplots flasch vorgibst? hier ein Beispiel:

Code:


y1 = rand(10,1);
y2 =rand(10,1);

figure;
subplot(2,1,1)
% hier kommt das erste was du poltten willst
plot(y1)
subplot(2,1,2)
% hier kommt das zweite was du poltten willst
plot(y2)

 
Private Nachricht senden Benutzer-Profile anzeigen
 
metronomy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 17:05     Titel:
  Antworten mit Zitat      
Hallo lilov,

danke für deine Antwort. Aber mit dem was du da angegeben hast plottet Matlab mir ja für 2 Plots 2 Abbildungen. Ich möchte aber 2 Plots in 1 Abbildung.

Ich versuche dir noch einmal ein paar Zahlen zu geben.
Für subplot1:

Plot 1: Verteilung Ns in Deutschland (aus nc-Datei)

Code:
ns=randn(134,92);
lon_org=[3.95:0.1:17.25];
lat_org=[45.85:0.1:54.95];



Plot 2: Deutschlandgrenze oben drauf (ist jetzt nicht die Deutschlandgrenze aber irgendeine beliebige Linie im Wertebereich)

Code:
Lat=[51:0.1:53];
Lon=[6:0.1:8];
 


Für Subplot2:
Plot 1: Verteilung Ns in Deutschland (aus nc-Datei)

Code:
ns=randn(134,92);
lon_org=[3.95:0.1:17.25];
lat_org=[45.85:0.1:54.95];



Plot 2: Deutschlandgrenze oben drauf
Code:

Lat=[51:0.1:53];
Lon=[6:0.1:8];
 
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 27.03.2012, 17:28     Titel:
  Antworten mit Zitat      
meinst du sowas:


Code:

ns=randn(92,134);
lat_org=[45.85:0.1:54.95];
lon_org=[3.95:0.1:17.25];

Lat=[51:0.1:53];
Lon=[6:0.1:8];

contourf(lon_org,lat_org,ns)
shading flat
hold on % damit der letzte plot nicht durch den neuen ersetzt wird
plot(Lon,Lat,'k','linewidth',3)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
metronomy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 17:37     Titel:
  Antworten mit Zitat      
Genau so.

Das hab ich ja für einzelne Plots mit

Code:
axes('Nextplot','add');


auch schon hingekriegt. Der Befehl scheint aber für subplot nicht zu funktionieren. hold on machts aber!

Jippi! Vielen Dank!!
 
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.