- figure: https://www.mathworks.com/help/matlab/ref/figure.html
 - plot: https://www.mathworks.com/help/matlab/ref/plot.html
 
How to plot individual scale for plots?
    조회 수: 11 (최근 30일)
  
       이전 댓글 표시
    
Hello everyone, 
Is it possible to set individual scale to each data plot plotted in the graph? I am trying to do that. And how can i change the length and width of the plot? I am attaching the data and the reference image here. Please kindly help me in doing that.
My code is a s follows:
Z = readtable('Atq100.xlsx') ;
data = table2array(Z) ; 
plot(data(:,2)+10, data(:,1));
hold on
plot(data(:,4)+250, data(:,3));
hold on
plot(data(:,6)+500, data(:,5));
hold on
plot(data(:,8)+1000, data(:,7));
hold on
plot(data(:,10)+1500, data(:,9));
hold off
legend('x=10', 'x=250', 'x=500', 'x=1000', 'x=1500', 'Location', 'northeastoutside');
xlabel('x');
ylabel('Radius');
title('Velocity q = 100')
댓글 수: 0
채택된 답변
  Samayochita
 2025년 8월 18일
        Hi Vishnuvardhan Naidu Tanga,
I understand that you are trying to set individual y-axis scales for each plot. In your code, you have shifted each velocity profile along the x-axis, but they are all still using the same y-scale.
In MATLAB, there is no direct method to have “per-plot y-axis scale” in a single axes object, but you can achieve something similar by having x-axis or y-axis scaling and shifting the plots so they do not overlap.
% Read the data
Z = readtable('Atq100.xlsx');
data = table2array(Z);
% Scaling factors for each dataset 
xScale = [1.0, 0.8, 1.2, 0.6, 1.0];  % Control length of velocity profile
yScale = [1.0, 1.0, 0.9, 1.1, 0.8];  % Control height of radius profile
% Horizontal offsets so that the curves do not overlap
xOffset = [0, 250, 500, 1000, 1500];
% changes overall figure width and height in pixels [left bottom width height]
figure('Position', [100 100 1400 600]);
hold on;
% Plot each dataset
plot(data(:,2)*xScale(1) + xOffset(1), data(:,1)*yScale(1), 'LineWidth', 1.5);
plot(data(:,4)*xScale(2) + xOffset(2), data(:,3)*yScale(2), 'LineWidth', 1.5);
plot(data(:,6)*xScale(3) + xOffset(3), data(:,5)*yScale(3), 'LineWidth', 1.5);
plot(data(:,8)*xScale(4) + xOffset(4), data(:,7)*yScale(4), 'LineWidth', 1.5);
plot(data(:,10)*xScale(5) + xOffset(5), data(:,9)*yScale(5), 'LineWidth', 1.5);
 Below are the documentation links for your reference: 
 Hope this was helpful.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Axis Labels에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
