我正在研究matlab编程,我的问题是在y轴上的同一个图形中我需要有变量缩放,例如从0.1到1我需要在0.1之间有一个间隙,但是在1之后我需要比例差距为2,是否有一些命令可用?
答案 0 :(得分:1)
The Mathworks on Matlab的答案有一个例子,它可以完成您想要实现的目标。我们的想法是在同一个图上创建2个轴,并使用一个轴绘制一些数据(例如0.1:0.1:1刻度线),其余轴放在其他轴上。然后用透明背景覆盖两个轴:
%Create two overlapping axes
axes_handle_1 = axes;
axes_position = get(axes_handle_1, 'Position');
axes_handle_2 = axes('Position', axes_position);
%Create some data with a large gap in the x domain
my_x_data = [1:10 25:35];
my_y_data = rand(1, length(my_x_data));
%Plot the two sections of data on different axes objects
plot(axes_handle_1, my_x_data(1:10), my_y_data(1:10))
plot(axes_handle_2, my_x_data(11:end), my_y_data(11:end))
%Link the y axis limits and fontsize property of the axes objects
linkaxes([axes_handle_1 axes_handle_2], 'y');
linkprop([axes_handle_1 axes_handle_2], 'FontSize');
%Set the x range limits and tick mark positions of the first axes object
set(axes_handle_1, 'XLim', [1 21], ...
'XTick', [1 5 10])
%Set the x range limits and tick mark positions for the second axes object.
%Also set the background color to 'none', which makes the background
%transparent.
set(axes_handle_2, 'Color', 'none', ...
'YTickLabel', [], ...
'XLim', [14 35], ...
'XTick', [25 30 35])
这很简单,据我所知,没有内置的方法可以做到这一点,除非文件交换提交。无论如何,如果您对上述代码有疑问,请询问!
答案 1 :(得分:0)
请使用matlab的gca属性。在gca中,您可以将变量设置为比例。通过合并两个不同的比例来创建该变量
x=[1:80];
y=[.1:.1:8];
figure
plot(x,y);
%First Scale
scale1=[.1:.1:1];
%New scale is being started from 3. If we start from 1, 1 will be repeated
scale2=[3:2:9];
%Merging two variables scale1 and scale2
set(gca,'YTick',[scale1 scale2]);
请参阅http://www.mathworks.in/help/matlab/creating_plots/change-tick-marks-and-tick-labels-of-graph.html
答案 2 :(得分:0)
您还可以尝试缩放一个数据集,使其具有与其他数据集相似的幅度。在这里,您可以将一个数据集乘以100(或任何合适的缩放参数),然后它将在大小上与其他数据集相似。为了清楚地提及图表中已缩放的数据,请使用图例。
plot(x,data1,x,100*data2)
legend('data1','100*data2','location','southeast')
希望这有帮助。