Filter löschen
Filter löschen

How can I add string character description in the X axes instead of numbers? Is there a way to enhancer this code?

3 Ansichten (letzte 30 Tage)
How can I add string character description in the X axes instead of numbers?
Please see code below:
clear all; %get rid of everything in memory
close all; %close all open figures
%X axis
Test_Cases = { 'A in A', 'B in B', 'C in C', 'D in D', 'E in E', 'F in F' };
%Y axis
MaxorMin='min' %'max' or 'min'
if strcmpi(MaxorMin, 'max')
C_p_single_Tap= [0.450,0.383,0.513,1.683,1.494;
0.470 0.559 0.504 1.752 1.699;
0.665 0.559 0.431 1.483 1.582;
0.800 0.770 0.454 1.757 1.699;
0.663 0.653 0.199 1.223 1.934;
9.904 20.387 13.538 17.383 10.242];
C_p_area_average= [0.110 0.078 0.086 0.857 0.569;
0.126 0.093 0.091 0.976 0.595;
0.116 0.102 0.081 0.858 0.581;
0.120 0.066 0.067 0.527 0.845;
0.116 0.102 0.081 0.858 0.581;
1.058 2.527 6.418 3.411 1.840];
GCp_CC_ASCE=[0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0];
elseif strcmpi(MaxorMin, 'min')
C_p_single_Tap= [-1.836 -2.556 -4.615 -1.827 -2.702;
-2.218 -4.210 -7.497 -2.459 -4.187;
-1.865 -3.626 -6.552 -2.759 -2.480;
-2.541 -4.080 -7.459 -2.948 -4.080;
-1.591 -4.506 -11.288 -2.225 -1.300;
-13.129 -23.544 -39.372 -16.131 -19.103];
C_p_area_average= [-0.918 -0.760 -0.883 -0.926 -0.901;
-0.958 -0.975 -1.396 -0.882 -1.036;
-0.870 -1.014 -0.791 -0.765 -0.893;
-1.142 -0.920 -1.375 -1.045 -1.090;
-0.673 -0.814 -1.472 -0.629 -0.602;
-5.510 -3.513 -6.362 -6.582 -5.826];
GCp_CC_ASCE=[-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4];
end %if min or max
clear data
screensize = get( groot, 'Screensize' );
figure('Position', screensize)
t=tiledlayout(1,5,'TileSpacing','none');
for i = 1:5
plot(nexttile,1,C_p_single_Tap(1,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(1,C_p_area_average(1,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(2,C_p_single_Tap(2,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(2,C_p_area_average(2,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(3,C_p_single_Tap(3,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(3,C_p_area_average(3,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(4,C_p_single_Tap(4,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(4,C_p_area_average(4,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(5, C_p_single_Tap(5,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(5,C_p_area_average(5,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(6,C_p_single_Tap(6,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(6,C_p_area_average(6,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
yline(GCp_CC_ASCE(:,i),'--','LineWidth',3, 'Color', [1 0 0]);
A=min(min(C_p_single_Tap),min(C_p_area_average));
B=max(max(C_p_single_Tap),max(C_p_area_average));
if strcmpi(MaxorMin, 'max')
text(3,max(B)+1.55, "ZONE " + i ,'FontSize', 26,...
'HorizontalAlignment', 'center', 'VerticalAlignment',...
'middle','Interpreter', 'latex');
elseif strcmpi(MaxorMin, 'min')
text(3,max(B)+1.55, "ZONE " + i ,'FontSize', 26,...
'HorizontalAlignment', 'center', 'VerticalAlignment',...
'middle','Interpreter', 'latex');
end
ax.XTickLabel= sprintf('Test: %i', Test_Cases{mod(i-1,length(Test_Cases))+1});
end
linkaxes(t.Children)
xlim([-1 7])
xlabel(nexttile(3),'{\rm{Test case number}}','Interpreter','Latex','FontSize', 26);
ylabel(nexttile(1),'${C_p}$','Interpreter', 'Latex','FontSize', 26);
set(t.Children(1:4), 'YTickLabel', [])
rect = [0.90, -0.1, 1, 1];
set(h,'FontSize',26,'Position', rect);

Akzeptierte Antwort

Voss
Voss am 23 Jan. 2022
Bearbeitet: Voss am 23 Jan. 2022
Something like this?
clear all; %get rid of everything in memory
close all; %close all open figures
%X axis
Test_Cases = { 'A in A', 'B in B', 'C in C', 'D in D', 'E in E', 'F in F' };
%Y axis
MaxorMin='min' %'max' or 'min'
MaxorMin = 'min'
if strcmpi(MaxorMin, 'max')
C_p_single_Tap= [0.450,0.383,0.513,1.683,1.494;
0.470 0.559 0.504 1.752 1.699;
0.665 0.559 0.431 1.483 1.582;
0.800 0.770 0.454 1.757 1.699;
0.663 0.653 0.199 1.223 1.934;
9.904 20.387 13.538 17.383 10.242];
C_p_area_average= [0.110 0.078 0.086 0.857 0.569;
0.126 0.093 0.091 0.976 0.595;
0.116 0.102 0.081 0.858 0.581;
0.120 0.066 0.067 0.527 0.845;
0.116 0.102 0.081 0.858 0.581;
1.058 2.527 6.418 3.411 1.840];
GCp_CC_ASCE=[0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0;
0.3 0.3 0.3 1.0 1.0];
else%if strcmpi(MaxorMin, 'min')
C_p_single_Tap= [-1.836 -2.556 -4.615 -1.827 -2.702;
-2.218 -4.210 -7.497 -2.459 -4.187;
-1.865 -3.626 -6.552 -2.759 -2.480;
-2.541 -4.080 -7.459 -2.948 -4.080;
-1.591 -4.506 -11.288 -2.225 -1.300;
-13.129 -23.544 -39.372 -16.131 -19.103];
C_p_area_average= [-0.918 -0.760 -0.883 -0.926 -0.901;
-0.958 -0.975 -1.396 -0.882 -1.036;
-0.870 -1.014 -0.791 -0.765 -0.893;
-1.142 -0.920 -1.375 -1.045 -1.090;
-0.673 -0.814 -1.472 -0.629 -0.602;
-5.510 -3.513 -6.362 -6.582 -5.826];
GCp_CC_ASCE=[-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4;
-1.7 -2.3 -3.2 -1.1 -1.4];
end %if min or max
clear data
screensize = get( groot, 'Screensize' );
figure('Position', screensize)
t=tiledlayout(1,5,'TileSpacing','none');
for i = 1:5
plot(nexttile,1,C_p_single_Tap(1,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(1,C_p_area_average(1,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(2,C_p_single_Tap(2,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(2,C_p_area_average(2,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(3,C_p_single_Tap(3,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(3,C_p_area_average(3,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(4,C_p_single_Tap(4,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(4,C_p_area_average(4,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(5, C_p_single_Tap(5,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(5,C_p_area_average(5,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
hold on
plot(6,C_p_single_Tap(6,i),'o', 'MarkerFaceColor', [0 0 1],'MarkerEdgeColor',...
[0 0 1], 'MarkerSize', 14)
hold on
plot(6,C_p_area_average(6,i),'o', 'MarkerFaceColor', [1 0 0.87],'MarkerEdgeColor',...
[1 0 0.87], 'MarkerSize', 14)
yline(GCp_CC_ASCE(:,i),'--','LineWidth',3, 'Color', [1 0 0]);
A=min(min(C_p_single_Tap),min(C_p_area_average));
B=max(max(C_p_single_Tap),max(C_p_area_average));
if strcmpi(MaxorMin, 'max')
text(3,max(B)+1.55, "ZONE " + i ,'FontSize', 26,...
'HorizontalAlignment', 'center', 'VerticalAlignment',...
'middle','Interpreter', 'latex');
else%if strcmpi(MaxorMin, 'min')
text(3,max(B)+1.55, "ZONE " + i ,'FontSize', 26,...
'HorizontalAlignment', 'center', 'VerticalAlignment',...
'middle','Interpreter', 'latex');
end
% ax.XTickLabel= sprintf('Test: %i', Test_Cases{mod(i-1,length(Test_Cases))+1});
end
set(t.Children,'XTick',1:numel(Test_Cases),'XTickLabel',strcat({'Test: '},Test_Cases));
linkaxes(t.Children)
xlim([-1 7])
% xlabel(nexttile(3),'{\rm{Test case number}}','Interpreter','Latex','FontSize', 26);
ylabel(nexttile(1),'${C_p}$','Interpreter', 'Latex','FontSize', 26);
set(t.Children(1:4), 'YTickLabel', [])
rect = [0.90, -0.1, 1, 1];
set(h,'FontSize',26,'Position', rect);
Unrecognized function or variable 'h'.
  3 Kommentare
Voss
Voss am 24 Jan. 2022
Here are some commands you can use/modify at will to set up the xticklabels and yticklabels:
% set up axes like in your code:
t = tiledlayout(1,5,'TileSpacing','none');
nexttile();
nexttile();
nexttile();
nexttile();
nexttile();
linkaxes(t.Children);
xlim([-1 7]);
set(t.Children(1:4),'YTickLabel',[]);
% another way to make Test_Cases, btw:
Test_Cases = arrayfun(@(x)sprintf('%s in %s',x,x),'A':'F','UniformOutput',false);
% adjust all the TickLabels:
% set(t.Children,'XTick',1:numel(Test_Cases),strcat({'Test: '},Test_Cases));
xax = get(t.Children,'XAxis');
set([xax{:}], ...
'FontSize',12, ...
'TickLabelInterpreter','latex', ...
'TickValues',1:numel(Test_Cases), ...
'TickLabel',strcat({'\emph{Test: '},Test_Cases,'}'), ... % \emph{} for italics in latex
'TickLabelRotation',60);
set(get(t.Children(end),'YAxis'), ...
'FontSize',12, ...
'TickLabelInterpreter','latex');

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by