我有以下内容:
stringr
这会画出x坐标:str_match("abc_def_ghi_jkl", "(.*)_((?:[^_]*_){0}[^_]*$)")[,2:3]
# [1] "abc_def_ghi" "jkl"
str_match("abc_def_ghi_jkl", "(.*)_((?:[^_]*_){1}[^_]*$)")[,2:3]
# [1] "abc_def" "ghi_jkl"
str_match("abc_def_ghi_jkl", "(.*)_((?:[^_]*_){2}[^_]*$)")[,2:3]
# [1] "abc" "def_ghi_jkl"
但我希望x坐标标签的p值= p = [2;3; 4; 6; 8;11;16;23;32; 45;64;91;128;181;256;362]
up = [4.00;3.66; 3.500; 3.50; 3.37; 3.27; 3.18; 3.13;3.09;3.04; 3.00;2.97;2.94;2.90;2.89;2.87];
down = [1.50; 2.00;2.00;2.16;2.25;2.27;2.37;2.43;2.50;2.55;2.57;2.61;2.64;2.67;2.68;2.70];
fill([p;flipud(p)],[up;flipud(down)],'--b')
请帮忙。
答案 0 :(得分:0)
您使用的是哪个版本的Matlab?
注意:从R2014b开始,您可以使用点表示法来设置属性。如果您使用的是早期版本,请改用set函数,例如
set(ax,'YTick',[-1 -0.5 0 0.5 1])
。
% For R2014a and earlier:
% set(ax,'XTickLabel',{'-3pi','-2pi','-pi','0','pi','2pi','3pi'})
% set(ax,'YTickLabel',{'min = -1','-0.5','0','0.5','max = 1'})
我的代码如下:
clear
clc
close all
p = [2;3; 4; 6; 8;11;16;23;32; 45;64;91;128;181;256;362];
up = [4.00;3.66; 3.500; 3.50; 3.37; 3.27; 3.18; 3.13;3.09;3.04; 3.00;2.97;2.94;2.90;2.89;2.87];
down = [1.50; 2.00;2.00;2.16;2.25;2.27;2.37;2.43;2.50;2.55;2.57;2.61;2.64;2.67;2.68;2.70];
fill([p;flipud(p)],[up;flipud(down)],'--b');
labels={'2' '3' '4' '6' '8' '11' '16' '23' '32' '45' '64' '91' '128' '181' '256' '362'};
set(gca,'Xtick',linspace(p(1), p(end), length(labels)),'XTickLabel',labels)
答案 1 :(得分:0)
我认为XTickLabel和XTick的长度必须匹配。
请参阅以下代码示例:
x = 2:64;
y = sin(x/10);
plot(x, y);
XTickLabel = {'2' '3' '4' '6' '8' '11' '16' '23' '32' '45' '64'};
ax = gca;
ax.XTick = linspace(x(1), x(end), length(XTickLabel));
ax.XTickLabel = XTickLabel;
正如 GeekCristiano 所述,
以上样本需要Matlab R2014b及以上版本。
对于Matlab R2014b之前的版本,请使用以下示例:
x = 2:64;
y = sin(x/10);
plot(x, y);
XTickLabel = {'2' '3' '4' '6' '8' '11' '16' '23' '32' '45' '64'};
ax = gca;
set(ax, 'XTick', linspace(x(1), x(end), length(XTickLabel)));
set(ax, 'XTickLabel', XTickLabel);