2017-07-25 4 views
1

Einige der Leute in meinem Team, einschließlich mir selbst, finden es ziemlich verwirrend, dass in einem Bokeh Scatter Plot, sagen wir mit der circle Methode, für eine anfängliche Autoscale Fit von Die Daten auf der Abbildung können wir in einer vernünftigen Größe für unsere Daten wählen, indem wir zum Beispiel etwas wie plot.circle(x , y , size=3)Wie Bokeh Skalpotgröße nach Zoom zu skalieren

verwenden. Wenn wir jedoch interaktiv in unsere Daten hineinzoomen, sind die angezeigten Glyphengrößen invariant gegenüber dem Zoom. Gibt es eine Möglichkeit, sie proportional zum Zoom, den wir gewählt haben, skalieren zu lassen? Etwas, das einer Vektorgrafik-Interaktion ähnelt (zB svg). Wenn der Speicher mir recht ist, sollten Matlab-Figuren und Matplotlib-Figuren das Zoom-Proportionalitäts-Verhalten beibehalten. Um das Verhalten, das wir sehen, zu demonstrieren, betrachte ich das erste Bild und die rote Box, in die ich näher auf das zweite Bild zoome.

initial zoom focused zoom

So wie eine kurze Demo Powerpoint mit der Art der gewünschten Verhalten zu veranschaulichen ... vector graphic example 1 vector graphic example 1 zoomed in

Antwort

3

Für Kreise, stellen Sie den radius kwarg anstelle des size Wert. (Es gibt ähnliche glyphspezifische Werte für die anderen Glyphtypen).

d.h .:

plot.circle(x=[1,2,3], y=[1,2,3], radius=0.5) 

size wird immer in Bildschirmkoordinaten (Pixel) wiedergegeben, aber radius und die damit verbundenen Eigenschaften sind in Datenkoordinaten berechnet und sollte mit Zoomen in der Größe ändern.

+0

Sehr gut, muss den Bildschirm im Vergleich zu Maßeinheiten verpasst haben ... 'Die Größe (Durchmesser) Werte für die Marker in Bildschirm Raumeinheiten' Bildschirm Raumeinheiten, das alles erklärt. Wir haben unseren Matplotlib-Code auf bokeh portiert und versehentlich die 'markersize'-Definition des vorherigen auf' size' im Bokeh gemappt. Danke für die Köpfe hoch. – jxramos

+0

Kreisradius hat sicherlich den Trick gemacht, auf der Suche nach den analogen geometrischen Größenoptionen für meine anderen drei Glyphenverwendungen, 'x',' triangle' und 'inverted_triangle' Ich habe auf den ersten Blick nichts geschaut. Durchsuchen der [Referenzen] (http://bokeh.pydata.org/en/latest/docs/reference/plotting.html#bokeh-plotting) nach anderen Glyphen, die 'Enum ('screen', 'data') verwenden') (inspiriert von 'radius_units') Ich fand die folgende Liste ... 'ringförmiger Keil, Kreisring, Bogen, Kreis, Ellipse, Bild, image_rgba, image_url, oval, Strahl, rect, Keil'. Kann mit den anderen Glyphen, die ich benutze, kein Glück haben :( – jxramos

+0

Ja, Markierungen sind wirklich als "Punkt" -Streuungszeichen gedacht, so dass sie nur eine Bildschirmgröße haben. Es ist möglich, Bokeh zu verlängern, also ist es möglich, dass du es machen kannst benutzerdefinierte Glyphen, die wie Markierungen sind, aber mit der Datenzoomstufe skaliert werden Alternativ können Sie mit "Patches" verschiedene Formen wie Dreiecke, Rauten oder Quadrate zeichnen, die skaliert werden – bigreddot

Verwandte Themen