如何将函数传递给julia Gadfly主题参数

如何将函数传递给julia Gadfly主题参数,julia,gadfly,Julia,Gadfly,我画了一个这样的情节: 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")))) 如您所见,点周围的白色圆圈使绘图的高密度部分几乎为白色 我想将点的外圆颜色更改为黑色(或蓝色),以更好地显示点确实存在 从这个角度看,Theme()的highlight

我画了一个这样的情节:

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"))))

如您所见,点周围的白色圆圈使绘图的高密度部分几乎为白色

我想将点的外圆颜色更改为黑色(或蓝色),以更好地显示点确实存在

从这个角度看,
Theme()
highlight\u color
参数可能会这样做,但它将函数作为参数


我不明白这是怎么回事。有什么想法吗?

参数名原来是
discrete\u highlight\u color

它应该是一个修改用于绘图的颜色的函数, 通常通过使其更亮(“色调”)或更暗(“阴影”)。 在我们的例子中,我们可以忽略当前颜色并返回黑色

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"))
  )
)

为了找到正确的参数,我首先键入

code_lowered( Theme, () )
它给出了参数列表, 然后


这显示了默认值是如何定义的。

对于像我这样最近试图解决这个问题的人,我发现最好的方法是通过主题设置
highlight\u width=0pt

比如说

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

我在下图中有一些附加主题

无法添加图片。这是一个链接:加1,用于说明如何获得解决方案。我认为这很有帮助。@VincentZoonekynd最后一行代码在Julia 0.6.3中返回此错误:
error:function有多个方法;请指定类型签名
,尽管使用Gadfly并传递函数。你知道怎么解决吗?@VincentZoonekynd
Color
与Julia 0.6.3不兼容(
ERROR:Color无法安装,因为它没有支持Julia 0.6.3的版本。
)。我试过了,效果很好。这只是一个字符的变化,太小,我建议编辑。
plot(x=rand(10),y=rand(10),Theme(highlight_width=0pt))