2014-11-18 5 views
6

Faccio una trama simile a questo:Come passare una funzione per il parametro Tema julia Tafano

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

Come si può vedere, il cerchio bianco intorno ai punti rende le parti ad alta densità del trama quasi bianco.

Vorrei cambiare il colore del cerchio esterno dei punti in nero (o blu) per mostrare meglio che i punti sono davvero lì.

Da the Gadfly documentation sembra che l'argomento highlight_color di Theme() possa farlo, ma accetta una funzione come argomento.

Non capisco come dovrebbe funzionare. Qualche idea?

+0

Impossibile aggiungere un'immagine. Questo è un link: http://tinypic.com/r/9hu9f6/8 – Skeppet

risposta

6

Il nome argomento risulta essere discrete_highlight_color ...

Dovrebbe essere una funzione che modifica il colore utilizzato per la trama, tipicamente rendendolo più leggero (una "tinta") o più scura (un " ombra "). Nel nostro caso, possiamo semplicemente ignorare il colore corrente e restituire il nero.

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

Per trovare l'argomento corretto, ho digitato

code_lowered(Theme,()) 

che dà la lista di argomenti, e poi

less(Gadfly.default_discrete_highlight_color) 

che mostra come il default il valore è definito.

+0

Più 1 per includere come hai ottenuto la soluzione. Penso che sia molto utile. –

0

Per quelli come me cercando di risolvere questo problema, più di recente, ho scoperto che il modo migliore per sbarazzarsi di quell'anello bianco fastidiosa è attraverso l'impostazione highlight_width=0pt

ad esempio

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

I tema aveva alcuni temi aggiuntivi nell'immagine sottostante an example I did