Ich möchte einen Säulen (Bar) Graph, der stacked und grouped ist
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hallo liebes Forum!
Ich habe folgendes Problem.
Ich habe mit einem Online Tool https://www.energieinstitut.at/tools/susi/ Graphen erstellt und ich möchte die Säulen Diagramme in Matlab mit meinen eigenen Daten abbilden.
Folgendes Diagramm als Bsp:

Wie man erkennen kann, wird der "Haushaltsstrom" als eine eigene Säule dargestellt neben den aufgestapelten Daten "Direktnutzung", "Batterieentladung" und "Strombezug".
Das alles wird zum Datum gruppiert.
Das Datum liegt bei mir als datetime Variable (Array?) 'Date' vor, dies soll als x-Achse dienen.
Die restlichen Daten habe ich in eine Matrix 'mat' gepackt.
Als Säulendiagramm mit dem Befehl "bar()" bekomme ich das angezeigt, halt aber nur gruppiert oder aufgestapelt, daher habe ich mir das Skrip "plotBarStackGroups.m" geholt und komme da aber nicht weiter.
Wie bekomme ich das in Matlab hin?
Anbei mein bisheriger Matlab Code: (Logischerweise funktioniert das mit der Anpassung der Farben und der Legende bisher auch nicht, aber das wäre im nächsten Schritt zu klären.)
% Neues Fenster fuer die Grafik erstellen
figure('Name','Simulation 2','NumberTitle','off');
% Bildnahme (wird spaeter fuer den Export verwendet)
im='A04_Bild_2';
% Matrix mit den einzelnen Variablen, *s.dt ist die Unwandlung in von W zu kWh
mat=[...
Pl*s.dt,... % Last bzw. Haushaltsstrom
PpvDirekt*s.dt,... % PV-Direktnutzung
Pbs2ac*s.dt,... % Batterieentladung
PnetzEnergie,... % Strombezug
];
% Umwandlung Datetime Array zu einem Date Vektor
DateVector=datevec(Date);
% Aufruf der Funktion plotBar
plotBarStackGroups(mat,DateVector);
% Darstellung als Balkendiagramm
% b=bar(Date,mat,'stacked','BarWidth',0.5);
% Anpassung der Balkenfarben mithilfe der RGB-Werte
b(1).FaceColor = [1.0000 0.8000 0]; % gelb
b(2).FaceColor = [0.4660, 0.6740, 0.1880]; % gruen
b(3).FaceColor = [0.75, 0, 0.75]; % rosa
b(4).FaceColor = [0.4940 0.1840 0.5560]; % lila
% Achsen der Darstellung als separate Variable auffuehren
ax=gca;
% Beschriftung der vertikalen Achse
ax.YLabel.String='Energie in kWh';
% Legende ergaenzen
legend([b(1) b(2) b(3) b(4)],...
{...
'Last'
'PV-Direktversorgung',...
'Batterieversorgung',...
'Netzleistung',...
},...
'Location','eastoutside');
4 Kommentare
Harald
am 23 Jan. 2024
Bearbeitet: Harald
am 23 Jan. 2024
Hallo,
du müsstest entweder, ähnlich wie beim legend-Befehl darunter, { } statt [ ] verwenden oder - noch besser " " statt ' '. dann sollte es klappen. Mit " " erstellt man strings statt Arrays von chars. Meist deutlich klarer in der Handhabung.
VG,
Harald
Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!