Verfasst am: 18.10.2020, 20:50
Titel: Gleiche colorbar für 6 subplots
Hallo,
die nächste Frage steht an. Ich habe den im Anhang befindlichen Plot gebastelt. Im Hintergrund sind die Radardaten und dadrüber sind die Gemeindegrenzen und Siedlungsflächen gelegt.
Ich schaffe es nicht alle subplots so mit der colorbar zu verlinken, dass die Farben in jedem Plot die gleiche Intensität (Niederschlagshöhe) haben.
Gleichzeitig würde ich gern die Radardaten tranzparenter gestalten und die Farben ändern. Das viele blau sieht zwar hübsch auf dem Computer aus aber beim drucken? Fehlender Niederschlag soll farblos werden und erst mit einem Niederschlag sollen Farben angezeigt werden.
Hat jemand eine Idee?
Die Uhrzeit wird automatisch aus dem Dateinamen ausgelesen.
colormap
. Schau dir mal die Standard Colormaps an.
hot
passt z.B. ganz gut, nur dass du blau statt rot willst, aber das kann man ja entsprechend vertauschen.
Zitat:
tranzparenter gestalten
Welchen Befehl verwendest du denn? Bei einigen Befehlen gibt es die Eigenschaft FaceAlpha für Transparenz.
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 ;)
du bist sehr fleißig. Vielen Dank für die Tipps. Zu caxis habe ich gerade etwas gefunden.
Der Code ist nicht SEXY aber es funktioniert. Hätte gern mit einer Funktion gearbeitet aber pcolor wollte noch einen Z-Wert haben und damit gab es Probleme. Also habe ich nur den generierten Code als Vorlage genutzt.
das ist eine Alternative zu caxis, ja.
Statt axes1, axes2, etc. könntest du auch einen Vektor von Koordinatensystemen ax(1), ax(2) etc. erstellen. Dann sollte der set-Befehl direkt mit
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 ;)
Habe jetzt wieder etwas Zeit, um mich mit der widerspenstigen COLORBAR zu beschäftigen. In den Foren habe ich den folgenden Code gefunden und für meine Zwecke geändert.
Er funktioniert leider ganz nicht so wie ich es mir vorstelle.
Ich habe in meinem Datensatz an zwei Stellen keine Daten. Diese sollen farblich separat gekennzeichnet werden. Die Colorbar soll von unten nach ober erst NaN (z.B. Farbe: [0.5 0.5 0.5]), die Zahlen 0 mit weiß (Farbe: [1 1 1] ) und dann die Zahlen von 0.01-7 über "hot" anzeigen.
Welche Zahl welche Farbe bekommt, ist in der Variable cmap hinterlegt.
Leider springt die Colorbar intern scheinbar immer auf Ticks -1 und übernimmt diese Farbe als Null.
Solange in cmap, Ticks und TickLabels die NaN's nicht berücksichtigt werden, funktioniert es.
1. Warum meckert MatLab, wenn die Matrix der Farbpalette sowie Ticks und TickLabels erweitet werden?
2. Hat jemand eine Lösung, wie ich zu meinem Ziel gelangen kann?
Mein Problem wird so nur teilweise gelöst. Zwischen -1 und 0 wird jetzt viel Farbe angezeigt. Die Farbpalette wird also auch in diesem Bereich interpoliert. Ich habe die -1 bereits auf -0.1 gesetzt. Leider ohne großen erfolg.
Der Abstand der Ticks auf Colorbar wird zwar angepasst, sodass zwischen -0.1 und 0 jetzt sehr wenig Platz ist (TickLabels 'NaN' und '0') aber das war's auch. Noch kleinere Abstände würden nur zu einer Überlagerung der TickLabels führen.
kannst du mal ein reproduzierbares Beispiel oder zumindest einen aktualisierten Screenshot zur Verfügung stellen? Das würde mir einen besseren Eindruck des momentanen Problems vermitteln.
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 ;)
% Datenausschnitt für x-Richtung --> muss mit XTick und XTickLabel % übereinstimmen analog für y xlim(axes3,[470000490000]);
ylim(axes3,[54500005470000]);
% Verwaltungseinheiten plotten: jedes Polygon in der shape-Datei muss % separat geladen werden for oo=1:4
VE_axes=plot(VE_SHAPE(oo).X,VE_SHAPE(oo).Y);
set(VE_axes,'Color','green');
hold on
end
%Siedlungsgebiete plotten
for gg=1:5
SG_axes=plot(SG_SHAPE(gg).X,SG_SHAPE(gg).Y,'DisplayName',SG_SHAPE(gg).Name);
set(SG_axes,'Color','red');
hold on
end
%Gewässer
for gg=1:3
GE_axes=plot(GE_SHAPE(gg).X,GE_SHAPE(gg).Y);%,'DisplayName',GE_SHAPE(gg).Name);
set(GE_axes,'Color','black');
hold on
end box(axes3,'on');
ich bräuchte bitte ein reproduzierbares Beispiel (d.h. ich kann es komplett ausführen und das Ergebnis selbst erzeugen) oder einen Screenshot des aktuellen Standes.
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 ;)
und das Problem ist nun das viele Dunkelblau? Du hast ja die Colormap schon etwas angepasst. Das würde ich weiterführen, also z.B. jet als Basis verwenden, aber unten mehr weiß einfügen.
Alternativ kannst du CLim z.B. auf [0.5 7] setzen.
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 ;)
wenn ich es richtig verstehe, gibt es keine Möglichkeit, einer colorbar separate Werte zuzuweisen und Werte zwischen denen Interpoliert werden soll. Die einzige Möglichkeit ist, eine zweit colorbar zu erzeugen und dieser nur einen Wert zuzuweisen und dann unter der erste Colorbar zu legen.
Ich werde dies mal ausprobieren.
Im Grunde sollen Werten kleiner 0 eine separate Farbe haben, Null soll weiß sein und alles darüber soll interpoliert werden.
Im Grunde sollen Werten kleiner 0 eine separate Farbe haben, Null soll weiß sein und alles darüber soll interpoliert werden.
Dann muss man die colormap entsprechend zusammensetzen. Das kann zwar etwas mühsam sein, das abhängig von CLim zu machen, aber sollte funktionieren.
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 ;)
CLIM = [-17]; % Limits für Colorbar
NUM_NV = 5; %Anzahl der Zeilen die in der Colorbar für die Werte mit "No Values" vorgesehen sind. 5 wurden gewählt, weil diese gut sichtbar sind.
NO_VALUES=[]; % Werte in der Matrix löschen; Wichtig beim Suchen der richtigen Anzahl der Zeilen die manipuliert werden sollen
NO_VALUES(1:NUM_NV,1:3)=0.5;
DIFF = 38-NUM_NV; %Damit Werte mit Null die Farbe weiß erhalten darf die Gesamtzahl der Zeilen von -1 bis 0 nicht größer 38 sein, wenn ein CLIM von -1 bis 7 geht
NAN_COLOR=[];
NAN_COLOR(1:DIFF,1:3) = 1; %
cmap = [NO_VALUES;NAN_COLOR;jet]; % Colors für Colormap
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.