Ich habe einige Daten, die ich als Konturdiagramm mit logarithmischer Skala der Werte anzeigen möchte (die Matrix Z) und beschriftete countours. Dies ist, wie ich es tun:Matlab: wie logarithmische Skala auf der Coutour-Plot
[C, h1] = contourf(X, Y, log(Z));
clabel(C,h1);
Hier ist mein Ergebnis:
Meine Frage ist: Wie kann ich die richtigen Etiketten auf den Konturen bekommen? Ich möchte keinen Farbbalken wie beschrieben here.
Edit: Hier ist mein Beispiel:
X = 1:1:20;
Y = X;
Z = zeros(size(Y));
for i = 1:size(Y,2);
Z(i, :) = 10^i;
end
[C, h1] = contourf(X, Y, Z);
clabel(C,h1);
Meine wahren Daten sehen wie folgt aus:
ich irgendwelche countour Linien Etiketten kann ich will, aber sie werden nicht sichtbar sein da meine Daten exponentiell sind (Und übrigens, die Beschriftungen, die in diesem Diagramm sichtbar sind, sind die wahren, diejenigen, die ich in der nächsten Handlung bekommen möchte).
Jetzt, da meine Daten exponentiell sind, muss ich die logarithmische Skala auf den angezeigten Werten (die Matrix Z) verwenden, um die Daten richtig zu zeigen. Hier ist, wie ich es tun (vielleicht gibt es einen anderen, besseren Weg, ich weiß es nicht, ich habe nichts anderes gefunden):
[C, h1] = contourf(X, Y, log(Z));
clabel(C,h1);
Hier ist, wie mein Bild sieht aus wie:
Und es sieht jetzt gut aus - Sie können sehen, wie meine Daten variieren. Die Etiketten sind jedoch falsch. Ich kann sie jetzt auf jeden beliebigen Vektor setzen:
- 0: 5: 45 - und ich werde genau das bekommen, was ich jetzt habe.
- 10^[0: 5: 45] (diese Etiketten hätte ich gerne). Aber jetzt sind meine geplotteten Daten geklingelt (0, 45) (weil ich den Logarithmus davon berechnet habe). Daher werden die meisten Labels nicht angezeigt (sie überschreiten den Datenbereich), und der eine wird falsch platziert.
Idealerweise würde Ich mag so etwas wie dies zu:
[C, h1] = contourf(X, Y, Z, 'ZScale', 'Log');
clabel(C,h1);
und das Bild an der Unterseite erhalten mit Etiketten 10, 10^5, 10^10 usw.
zusammenfassend, ich brauche einen der folgenden Schritte zu tun:
einen Weg finden, die logarithmische Skala programma einstellen Lassen Sie Matlab sich Gedanken über die Isolinien machen.
Sie können die Beschriftung auf den Isolinien manuell ändern, ohne sie zu verschieben (new_label = 10^old_label).
ich weiß, Sie Seite Etiketten mit 'ytick' – Yvon
@Yvon hinzufügen können, wie würde das mir helfen? Ich möchte keine zusätzlichen Etiketten - ich möchte nur die Etiketten ändern, die ich in den Konturen habe. Und gemäß der Dokumentation gibt es keine ytick-Eigenschaft für Konturplot (http://www.mathworks.com/help/matlab/ref/contour-properties.html) – user2738748
Welche Etiketten sprechen Sie? Die von "clabel" gezogenen? – BillBokeey