Matlab plot:刻度线之间的距离相等
Matlab plot: equal distance between ticks
我正在制作这个 3D 图,但数据不是线性的。这意味着在我的情节中,我想要显示的刻度线之间的距离不相等。我怎样才能调整 x 轴和 y 轴的比例以实现这种情况,即轴被分成与当前刻度相等的部分?
我想要相同的刻度和刻度标签,但它们在轴上的距离相等,而不是 0.1 到 0.5 之间的小距离和 1 到 5 之间的大距离。
目前的情节是这样的:
RMSEval = xlsread('RMSEvalues.xlsx');
X = RMSEval(:,1);
Y = RMSEval(:,2);
Z = RMSEval(:,3);
figure(1);
xi = linspace(min(X),max(X),30);
yi= linspace(min(Y),max(Y),30);
[XI,YI] = meshgrid(xi,yi);
ZI = griddata(X,Y,Z,XI,YI);
contourf(XI,YI,ZI);
colormap('jet');
xticks([1e-13 5e-13 1e-12 5e-12 1e-11]);
yticks([1e-18 5e-18 1e-17 5e-17 1e-16]);
colorbar;
0.1 和 0.5 之间的距离与 1 和 5 之间的距离相同的图将是对数图,特别是对数-对数图,因为您希望它在两个轴上都有。实现此目的的一种方法是对数据的 X 和 Y 值进行对数转换,并修改刻度标记标签以匹配未转换的值,而不是您实际绘制的对数值。
下面是对解决方案的粗略猜测。我说一个粗略的猜测,因为如果不发布您从 xlsx 文件导入的数据或该数据的配对版本(如 MWE),我实际上无法对其进行测试。
RMSEval = xlsread('RMSEvalues.xlsx');
X = log(RMSEval(:,1));
Y = log(RMSEval(:,2));
Z = RMSEval(:,3);
figure(1);
xi = linspace(min(X),max(X),30);
yi= linspace(min(Y),max(Y),30);
[XI,YI] = meshgrid(xi,yi);
ZI = griddata(X,Y,Z,XI,YI);
contourf(XI,YI,ZI);
colormap('jet');
xticks(log([1e-13 5e-13 1e-12 5e-12 1e-11]));
xticklabels(cellfun(@num2str,num2cell(),'UniformOutput',false));
yticks(log([1e-18 5e-18 1e-17 5e-17 1e-16]));
yticklabels(cellfun(@num2str,num2cell([1e-18 5e-18 1e-17 5e-17 1e-16]),'UniformOutput',false));
colorbar;
我正在制作这个 3D 图,但数据不是线性的。这意味着在我的情节中,我想要显示的刻度线之间的距离不相等。我怎样才能调整 x 轴和 y 轴的比例以实现这种情况,即轴被分成与当前刻度相等的部分?
我想要相同的刻度和刻度标签,但它们在轴上的距离相等,而不是 0.1 到 0.5 之间的小距离和 1 到 5 之间的大距离。
目前的情节是这样的:
RMSEval = xlsread('RMSEvalues.xlsx');
X = RMSEval(:,1);
Y = RMSEval(:,2);
Z = RMSEval(:,3);
figure(1);
xi = linspace(min(X),max(X),30);
yi= linspace(min(Y),max(Y),30);
[XI,YI] = meshgrid(xi,yi);
ZI = griddata(X,Y,Z,XI,YI);
contourf(XI,YI,ZI);
colormap('jet');
xticks([1e-13 5e-13 1e-12 5e-12 1e-11]);
yticks([1e-18 5e-18 1e-17 5e-17 1e-16]);
colorbar;
0.1 和 0.5 之间的距离与 1 和 5 之间的距离相同的图将是对数图,特别是对数-对数图,因为您希望它在两个轴上都有。实现此目的的一种方法是对数据的 X 和 Y 值进行对数转换,并修改刻度标记标签以匹配未转换的值,而不是您实际绘制的对数值。
下面是对解决方案的粗略猜测。我说一个粗略的猜测,因为如果不发布您从 xlsx 文件导入的数据或该数据的配对版本(如 MWE),我实际上无法对其进行测试。
RMSEval = xlsread('RMSEvalues.xlsx');
X = log(RMSEval(:,1));
Y = log(RMSEval(:,2));
Z = RMSEval(:,3);
figure(1);
xi = linspace(min(X),max(X),30);
yi= linspace(min(Y),max(Y),30);
[XI,YI] = meshgrid(xi,yi);
ZI = griddata(X,Y,Z,XI,YI);
contourf(XI,YI,ZI);
colormap('jet');
xticks(log([1e-13 5e-13 1e-12 5e-12 1e-11]));
xticklabels(cellfun(@num2str,num2cell(),'UniformOutput',false));
yticks(log([1e-18 5e-18 1e-17 5e-17 1e-16]));
yticklabels(cellfun(@num2str,num2cell([1e-18 5e-18 1e-17 5e-17 1e-16]),'UniformOutput',false));
colorbar;