Charts 如何在白炽灯图表中操作图例
我试图在白炽灯图表中加入一个图例,但在获得我想要的东西时遇到了一些问题:Charts 如何在白炽灯图表中操作图例,charts,clojure,legend,incanter,Charts,Clojure,Legend,Incanter,我试图在白炽灯图表中加入一个图例,但在获得我想要的东西时遇到了一些问题: 我想先实例化一个没有数据的图表(使用[[[]作为我的x y参数),然后在单独的步骤中添加数据点。但是,添加图例的唯一方法是在构造函数中给出初始x y点后指定:图例true。无法在没有x-y参数的情况下指定:legend true,并且我没有找到任何添加legend函数 图例选项捕获添加图表数据时使用的代码,这意味着如果我不想在图例中出现难看的代码,我必须为X点和Y点创建一个好看的变量,而不仅仅是在直线上调用函数 因此,创建
[[[]
作为我的x y参数),然后在单独的步骤中添加数据点。但是,添加图例的唯一方法是在构造函数中给出初始x y点后指定:图例true
。无法在没有x-y参数的情况下指定:legend true
,并且我没有找到任何添加legend
函数(def lux-ratios-plot
(doto (scatter-plot [] [] :legend true
:title "Lux/CH0 vs. CH1/CH0"
:x-label "CH1/CH0"
:y-label "Lux/CH0")
(view)))
(doseq [dut [incs hals cfls leds]]
(add-points lux-ratios-plot (get-vals :CH1/CH0 dut) (get-vals :Lux/CH0 dut) :points true))
; Show the trend line for each bulb
(doseq [fit [inc-fit hal-fit cfl-fit led-fit]]
(add-lines lux-ratios-plot (map #(second %) (:x fit)) (:fitted fit)))
因此,在白炽灯图中是否有任何方法可以指定每个(添加行…
或(添加点…
调用)的图例字符串
非常感谢
Michael每个白炽灯图表也是JFreeChart对象。因此,您可以使用任何JFreeChart方法来操作白炽灯图表
例如,要删除图例,可以执行以下操作(.removeLegend lux ratio plot)。还有一种方法。我自己还没试过。希望这有帮助。要将好的名称与一系列点或线相关联,请在将数据添加到图表的命令中使用关键字
:series label
。例如:
(def c (scatter plot x y :legend true))
(add-lines c x1 y1 :series-label "Primary")
(add-lines c x2 y2 :series-label "Secondary")
这并没有解决您问题中的另一个问题:为了创建带有图例的裸散点图,您必须将空数据传递给散点图
,即,将x
和y
作为上面的空序列,因为白炽灯不允许您在不将数据传递到散点图的情况下指定:图例。如果x
和y
为空(例如,它们为nil
),则空数据也会作为元素显示在图例中。我认为这个问题目前还不能直接解决(1.5.7版)
一种解决方案是在散点图调用中传递真实数据,以及:series label
参数。但是,当数据集的数量事先未知时,这可能会使以编程方式生成散点图变得更加困难,因为您必须以不同于其他数据集的方式处理第一个数据集
另一个笨拙的解决方案是:
(def chart (scatter-plot nil nil :legend true :series-label ""))
(set-stroke-color chart (java.awt.Color. 0 0 0 0) :dataset 0)
将空字符串用作:series label
的值意味着图例中第一个空数据集的标签将不显示。set stroke color
调用使空数据集(即数据集0)的颜色透明。否则,图例中该数据集将有一个红点。在图例中,红点和空字符串所属的位置将有一个小的空白,但这比在那里看到红点更容易混淆