2016-06-21 20 views
-4

Ich möchte ein Plot ein bisschen wie ein Streudiagramm, aber mit Rechtecken erzeugen. Jedes Rechteck muss eine bestimmte Größe und Startposition haben, die durch Koordinaten bestimmt wird. All das kann ich bekommen.Octave - Plotten Rechtecke

Was ich jedoch tun möchte, ist jedes Rechteck mit einem anderen Wert, z. Aber ich weiß nicht, wie ich das machen soll.

Sie können sehen, was ich versuche mit dem Code unten.

x=rand(1,10)*10; 
y=rand(1,10)*10; 
w=rand(1,10)*5; 
h=rand(1,10)*20; 
axis([0 10 0 20]); 

for i=1:10 
rectangle('Position',[x(i) y(i) w(i) h(i)]) 
endfor 

Dies erzeugt der Graph

bearbeiten angehängt: Ich weiß um die ‚FaceColor‘ Eigenschaften und ‚EdgeColor‘ aber wenn ich eine Menge rectangles..say 100 oder so, und ich möchte färben jeder durch einen entsprechenden z-Wert Ich kann nicht scheinen, dass diese Eigenschaften ein Array von Z-Werten akzeptieren.

enter image description here

+1

Read [Dokumentation] (https://www.gnu.org/software/octave/doc/v4.0.1/Two_002ddimensional-Geometric-Shapes.html). Die Eigenschaften "FaceColor" und "EdgeColor" sind eindeutig dokumentiert ... – excaza

+0

Ja, ich verstehe "FaceColor" und "EdgeColor" .... diese Eigenschaften erlauben mir, durch Eingabe eines RGB-Tripels zu ... Aber was ist, wenn ich hundert Rechtecke habe ... kann ich FaceColor mit einem Array von Z-Werten benutzen ... es scheint nicht zu funktionieren. – user2551578

+0

Dann ordnen Sie Ihre Z-Werte den RGB-Tripeln zu. – excaza

Antwort

-2
x=rand(1,10)*10; 
y=rand(1,10)*10; 
w=rand(1,10)*5; 
h=rand(1,10)*20; 
z=randi(10,1,10)/10; 
axis([0 10 0 20]); 

for i=1:10 

cm=colormap; 
colorID=max(1, sum(z(i)>[0:1/length(cm(:,1)):1])); 
myColor=cm(colorID,:); 

rectangle('Position',[x(i) y(i) w(i) h(i)],'EdgeColor',myColor) 

endfor 
+5

Erzeugt visuell unterschiedliche Farben [ist kein triviales Problem] (http://graphicdesign.stackexchange.com/questions/3682/where-can-i-find-a-large-palette-set-of-contrasting-colors-for (coloring-many-d), weshalb es wichtig ist, den Prozess dahinter zu verstehen. Diese Methode wird nicht funktionieren, wenn Sie mehr Rechtecke als Farben in der Colormap haben. Da du angegeben hast, dass du 100 Rechtecke hast, bist du in diesem Bereich. – excaza