log-log plot
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a log-log graph generated by a specific software. I aim to replicate this graph precisely using MATLAB. I've made an attempt and although I'm getting close, it's not an exact match. The attached (softwarePlot.png) displays the original graph for reference. I'm particularly concerned about emulating the software's x-axis definition and maintaining the uniform spacing between each point. Enclosed is the MATLAB code I've written so far. Additionally, I'm interested in recreating the red line seen in the software's image, which represents the fitted line between the two blue lines.
MATLAB CODE
Q = importdata('data.txt');
figure;
semilogy(Q(:,1), Q(:,2),'og','MarkerSize',5,'MarkerFaceColor', 'g');
desiredXTicks = [0.2 1 5 10 20 40 60 75 90 95 98 99.5]; % Set the desired tick positions
xticks(desiredXTicks);
customXAxisLimits = [2/10,0.98*100]; % Adjust the values as needed
xlim(customXAxisLimits);
hold on
semilogy(Q(:,3),Q(:,4),'-b','linewidth', 1.5)
semilogy(Q(:,3),Q(:,5),'-b','linewidth', 1.5)
semilogy(Q(:,6),Q(:,7),'ok')
hold on
a = Q(:, 3);
a = a(~isnan(a));
b = Q(:, 4);
b = b(~isnan(b));
p = polyfit(Q(:,1),Q(:,2),2)
trend_y = polyval(p, Q(:,1));
plot(Q(:,1), trend_y, '-r','linewidth', 1.5)
legend({'Discharge data','5% lower limit','95% upper limit','Outliers'},'Location','Northwest','fontsize',14)
legend boxoff
ylim([100,1000000]);
The spacing between the values on the x-axis, particularly between 0.2 to 1 and 1 to 5, is too small. I would like these intervals to be larger in the matlab code.
0 commentaires
Réponses (1)
Sulaymon Eshkabilov
le 29 Août 2023
If understood your posted question, this is how to solve this issue using reverse X-axis data:
Q = importdata('DATA_IN.txt'); % Your data file name is renamed
figure;
semilogy(Q(:,1), Q(:,2),'og','MarkerSize',5,'MarkerFaceColor', 'g');
desiredXTicks = ([0.2 1 5 10 20 40 60 75 90 95 98 99.5]); % Set the desired tick positions
xticks(desiredXTicks);
customXAxisLimits = ([2/10,0.98*100]); % Adjust the values as needed
xlim(customXAxisLimits);
hold on
semilogy(Q(:,3),Q(:,4),'-b','linewidth', 1.5)
semilogy(Q(:,3),Q(:,5),'-b','linewidth', 1.5)
semilogy(Q(:,6),Q(:,7),'ok')
hold on
a = Q(:, 3);
a = a(~isnan(a));
b = Q(:, 4);
b = b(~isnan(b));
p = polyfit(Q(:,1),Q(:,2),2);
trend_y = polyval(p, Q(:,1));
plot(Q(:,1), trend_y, '-r','linewidth', 1.5)
legend({'Discharge data','5% lower limit','95% upper limit','Outliers'},'Location','Northwest','fontsize',14)
legend boxoff
ylim([100,1000000]);
set(gca, 'XDir','reverse');
grid on
1 commentaire
Voir également
Catégories
En savoir plus sur Data Distribution Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!