2016-03-25 9 views
-1

habe ich ein Stück mit zwei Datensatz, in einer primären und sekundären Y-Achsen jeweils unter VerwendungEinzel Legende für Plots in Primär- und Sekundärachsen

[ ha, hl1, hl2 ] = plotyy(xr, yr, xq, yq); 

Dann formatierte I die Linien mit

set(hl1, 'Linestyle', '-'); set(hl1, 'Color', 'b'); % solid, blue 
set(hl2, 'Linestyle', '--'); set(hl2, 'Color', 'r'); % dash, red 

und ich schuf schließlich eine gemeinsame Legende für beide mit

hl = legend([ hl1, hl2 ], 'r', '\theta/\pi'); 

ich denke, es ist nicht wichtig, die c Inhalt von (xr, yr, xq, yq). Die zwei Linien sind korrekt gezeichnet und jeder auf der richtigen Achse.

Die erste Zeile in der Legende sollte eine (durchgezogene, blaue) Linie haben, und die zweite Zeile sollte eine (Strich, rote) Linie haben. Das Ergebnis ist das Gegenteil (siehe Abbildung).

legend

Dies ist das gleiche, wenn ich

hl = legend([ hl2, hl1 ], 'r', '\theta/\pi'); 

und wenn ich das Komma ändern durch ein Semikolon [ hl2; hl1 ]. Was ist der richtige Weg?

+0

Ich würde den 'DisplayName' Ihrer Diagramme festlegen. 'set (hl1, 'DisplayName', 'r')'. Obwohl ich zustimme, ist das ein unerwartetes Verhalten. – Suever

+0

@Suever - Ich habe das gerade gemacht, und ich habe die Legende mit dem gleichen Befehl wie zuvor erstellt. Es funktioniert nicht. –

+0

Wenn Sie das tun, dann * * nicht * die zweite Eingabe in 'legende' geben – Suever

Antwort

0

Mit Code wie ederag der

x = linspace(0, 2*pi, 101); 
[ha, hl1, hl2] = plotyy(x, sin(x), x, -sin(x)); 
set(hl1, 'Linestyle', '-'); set(hl1, 'Color', 'b'); % solid, blue 
set(hl2, 'Linestyle', '--'); set(hl2, 'Color', 'r'); % dash, red 
hl = legend([ hl1, hl2 ], 'r', '\theta/\pi'); 

Ich fand heraus, dass das Hinzufügen der Zeile

set(hl, 'fontsize', 20); 

, nachdem sie die Linien in der Legende umkehrt. Soweit ich verstehe, ist dies nicht aufgetreten (möglicherweise ein Bug?).

1

mit octave-4.0.1-rc4, default graphics_toolkit ("qt"), scheint das Ergebnis gut zu sein.

x = linspace(0, 2*pi, 101); 
[ha, hl1, hl2] = plotyy(x, sin(x), x, -sin(x)); 
set(hl1, 'Linestyle', '-'); set(hl1, 'Color', 'b'); % solid, blue 
set(hl2, 'Linestyle', '--'); set(hl2, 'Color', 'r'); % dash, red 
hl = legend([ hl1, hl2 ], 'r', '\theta/\pi'); 

enter image description here

Außer der \theta/\pi ist nicht richtig interpretiert. Es ist nicht nötig, einen Fehlerbericht zu erstellen, da dieser in der Entwicklungsversion behoben wurde. Aber mit 4.0.1 und graphics_toolkit("gnuplot") die Handlung ist in Ordnung:

enter image description here

So könnte es Zeit für ein Upgrade sein. Hier sind die ftp site und windows installers.

+0

Ich räumte alles auf und ließ Code wie deinen als Ausgangspunkt für das Debugging. Es stellt sich heraus, dass eine spätere Zeile 'set (hl, 'fontsize', 20) 'die Inversion verursacht hat. –

+1

Schade. Beim nächsten Mal gib bitte ein [mvce] (http://stackoverflow.com/help/mcve) – ederag