How to make subplots bigger and title in one line?
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi all, I would like to make my subplots larger so that all four fill my window (quarter the window, so to speak)
Furthermore I would like to have the subplot title in one line and not a line break at each title where I write my initial values.
Any help is appreciated!
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1611751/image.png)
%plotting
fig1 = figure();
fig1.WindowState = 'maximized';
subplot(4,2,1)
plot(elapsedTime, volt/1000, 'b')
hold on
for i = 1:length(time)
if boole(i) == 1
line ("xdata",[elapsedTime(i),elapsedTime(i)], "ydata",[max(volt/1000)/1.5,max(volt/1000)], "linewidth", 0.5, 'linestyle', '--')
text(elapsedTime(i), max(volt/1000), [num2str(volt(i)/1000) "V"], 'HorizontalAlignment', 'left', 'VerticalAlignment', 'top', 'FontSize', 14);
end
end
title(["Battery Voltage over Time (Initial RSoC = " num2str(rsoc(1)) "%)"])
xlabel("Time in s")
ylabel("Battery Voltage in V")
xlim([0 elapsedTime(end)])
ax(1)=gca;
grid on
zoom on
subplot(4,2,2)
plot(elapsedTime, curr/1000, 'r')
hold on
for i = 1:length(time)
if boole(i) == 1
line ("xdata",[elapsedTime(i),elapsedTime(i)], "ydata",[min(curr/1000),max(curr/1000)], "linewidth", 0.5, 'linestyle', '--')
end
end
title(["Battery Current over Time (Integrated Capacity Q = " num2str(round(100*Q)/100) "Ah)"])
xlabel("Time in s")
ylabel("Battery Current in A")
xlim([0 elapsedTime(end)])
ax(2)=gca;
grid on
zoom xon
subplot(4,2,3)
plot(elapsedTime, temp, 'k')
title(["Battery Temperature over Time (Initial Battery Temperature = " num2str(temp(1)) "°C)"])
xlabel("Time in s")
ylabel("Battery Temperature in °C")
xlim([0 elapsedTime(end)])
ax(3) = gca;
grid on
zoom xon
subplot(4,2,4)
plot(elapsedTime, rsoc)
hold on
for i = 1:length(time)
if boole(i) == 1
line ("xdata",[elapsedTime(i),elapsedTime(i)], "ydata",[0,max(rsoc)+10], "linewidth", 0.5, 'linestyle', '--')
text(elapsedTime(i), max(rsoc-10), [num2str(rsoc(i)) "%" ], 'HorizontalAlignment', 'left', 'VerticalAlignment', 'top', 'FontSize', 14);
end
end
title([" Relative State of Charge over Time (Initial RSoC = " num2str(rsoc(1)) "%)"])
xlabel("Time in s")
ylabel("State of Charge in %")
ylim([0 100]);
xlim([0 elapsedTime(end)])
ax(4)=gca;
grid on
zoom xon
linkaxes(ax, 'x')
0 commentaires
Réponse acceptée
Dyuman Joshi
le 8 Fév 2024
Modifié(e) : Dyuman Joshi
le 8 Fév 2024
Using tiledlayout here seems to be a better option, as it gives you a better control over the spacing and padding.
Also, while concatenating with a string array, use +. When you simply place a numerical value in between strings, the value will be convert to a string scalar and the result will be a string array, which when provided as input to title() displays each element in a separate line -
x1 = ["String" 55 "Yo"]
x2 = "String " + 55 + " Yo"
tiledlayout(2, 2, 'TileSpacing', 'compact')
[X,Y,Z] = peaks(20);
% Tile 1
nexttile
surf(X,Y,Z)
title("Battery Voltage " + 55 + " %")
% Tile 2
nexttile
contour(X,Y,Z)
title("Battery Current " + 65 + "Ah")
% Tile 3
nexttile
imagesc(Z)
title("Battery Temperature " + 42.0 + "°C")
% Tile 4
nexttile
plot3(X,Y,Z)
title("Relative State of Charge " + randi(100) + "%")
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Axis Labels dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!