2014-11-18 7 views
6

ich ein Grundstück wie diese machen:Wie eine Funktion julia Gadfly Theme Parameter zu übergeben

plot(
    layer(x=sort(randn(1000),1), y=sort(randn(1000),1), Geom.point), 
    layer(x=[-4,4], y=[-4,4], Geom.line(), Theme(default_color=color("black")))) 

ScatterPlot

Wie Sie der weiße Kreis um die Punkte sehen können, macht die hohe Dichte Teile der Handlung fast weiß.

Ich möchte die äußere Kreisfarbe der Punkte in schwarz (oder blau) ändern, um besser zu zeigen, dass die Punkte wirklich da sind.

Von the Gadfly documentation scheint es wie das highlight_color Argument von Theme() könnte das tun, aber es braucht eine Funktion als Argument.

Ich verstehe nicht, wie das funktionieren soll. Irgendwelche Ideen?

+0

Konnte kein Bild hinzufügen. Dies ist ein Link: http://tinypic.com/r/9hu9f6/8 – Skeppet

Antwort

6

Das Argument Name stellt sich heraus, discrete_highlight_color zu sein ...

Es sollte eine Funktion sein, die die Farbe für die Handlung, typischerweise, indem sie es leichter (eine „Tönung“) oder dunkler (a "verwendet, modifiziert Schatten"). In unserem Fall können wir einfach die aktuelle Farbe ignorieren und schwarz zurückgeben.

using Color 
using Gadfly 
plot(
    layer(
    x = sort(randn(1000),1), 
    y = sort(randn(1000),1), 
    Geom.point, 
    # Theme(highlight_width=0.0mm) # To remove the border 
    Theme(discrete_highlight_color = u -> LCHab(0,0,0)) 
), 
    layer(
    x = [-4,4], 
    y = [-4,4], 
    Geom.line(), 
    Theme(default_color=color("black")) 
) 
) 

Scatterplot

das richtige Argument zu finden, ich getippt ersten

code_lowered(Theme,()) 

die die Liste der Argumente gibt, und dann

less(Gadfly.default_discrete_highlight_color) 

, die zeigt, wie der Standard Wert ist definiert.

+0

Plus 1 für einschließlich, wie Sie Ihre Lösung erhalten haben. Ich denke, das ist sehr hilfreich. –

0

Für wie ich diejenigen, die versuchen, dieses Problem in jüngster Zeit zu lösen, entdeckte ich, dass der beste Weg, dieses lästigen weißen Ring durch das Thema highlight_width=0pt

zum Beispiel

plot(x=rand(10),y=rand(10),Theme(highlight_width=0pt)) 

ich Einstellung ist, um loszuwerden, hatte einige zusätzliche Themen in dem Bild unten an example I did