2017-08-29 7 views
4

Ich habe ein Problem bei der Darstellung einer Grafik, die von 0-10K läuft. Derzeit habe ich eine Berechnung von 0-100 und es sieht gut aus.Matlab brechen X-Achse

Derzeit:

enter image description here

Jetzt möchte ich ein X Punkte hinzufügen, die 10K ist Und es sieht so aus: enter image description here

Wie kann ich es halten von 0-100 und zeige nur dann die Sprünge zu 10K? Ist es überhaupt möglich?

Das Problem ist, dass 0-100 sehr kleiner Teil in 10K ist, so sieht es schlecht aus.

+0

Sie wollen nicht die x-Achse brechen - Sie wollen es sein logarithmisch: semilogx. - Dies wäre die richtige wissenschaftliche Methode, um Ihre Daten anzuzeigen. – thewaywewalk

Antwort

4

Sie könnten Ihren One-Outlier-Punkt mit einer engeren x-Koordinate plotten und dann die Eigenschaften XTick und XTickLabel so anpassen, dass es so aussieht, als ob der Plotbereich unterbrochen ist. Zum Beispiel:

plot([1:20 25], 1./[1:20 10000]); 
set(gca, 'XTick', [2:2:20 25], ... 
     'XTickLabel', strtrim(cellstr(int2str([2:2:20 10000].')))); 

Und hier ist die Handlung das schafft:

enter image description here

+0

Danke, mein Herr! es hat wirklich geholfen. –

2

Vielleicht können Sie versuchen, die x-Punkte (für die zweite Handlung) in verschiedenen Lücken zu probieren. Sie können zwei Arrays von x Abtastpunkten kombinieren (jedes Array mit einer festen Lücke, aber die erste Lücke ist viel kleiner als die zweite Lücke). dann plotten Sie die kombinierten Punkte.

Hier ist ein Codebeispiel:

clear; 
close all; 
clc; 

gap1 = 0.2; 
x_left = 1:gap1:3; 
gap2 = 0.5; 
x_right = 3+gap2:gap2:6; 
x_ticks_for_plot = [x_left x_right]; 

x=x_ticks_for_plot; 
y = sin(x); 
plot(x,y); 
xticks(x_ticks_for_plot); 

Und die Handlung:

enter image description here

In Ihrem Fall der zweite Spalt viel größer sein sollte als der erste, aber es ist die gleiche Idee.

+0

Vielen Dank auch für Ihre Zeit. –