首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何操作Incanter图表中的图例

如何操作Incanter图表中的图例
EN

Stack Overflow用户
提问于 2012-02-23 19:16:34
回答 2查看 827关注 0票数 4

我正试图在Incanter图表中加入一个传奇,但我在得到我想要的东西时遇到了一些困难:

  1. 我希望能够先实例化没有数据的图表(使用[] []作为my参数),然后在单独的步骤中添加数据点。但是,添加图例的唯一方法是在构造函数中给定初始x点之后指定:legend true。不能在没有x参数的情况下指定:legend true,而且我也没有找到任何add-legend函数。
  2. 图例选项捕获了我在添加图表数据时使用的代码,这意味着如果我不希望丑陋的代码出现在图例中,我必须为X点和Y点创建一个漂亮的vars,而不仅仅是按行调用函数。
  3. 因此,创建的图例包括在创建空白图时使用的[][],它包括在获取点的数据时使用的函数调用,还包括名称损坏的匿名函数(fn*[p1__3813#](second p1__3813#)),它对我的图表的用户来说是非通信的。
  4. 我只是想能够将字符串与图例中的每一组点相关联,如matlab、excel等。

这是我目前的代码;

代码语言:javascript
复制
(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)))

因此,在Incanter图中是否有任何方法可以为每个(add-lines ...)(add-points ...)调用指定一个图例字符串?

非常感谢

迈克尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-25 22:39:10

每个索引图也是一个JFreeChart对象。因此您可以使用任何JFreeChart方法来操作Incanter图表。

例如,要删除图例,您可以(.removeLegend勒克斯-比-绘图)。还有一个addLegend方法。我自己也没试过。希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2016-09-24 18:13:08

若要将好的名称与一系列的点或行相关联,请在将数据添加到图表的命令中使用关键字:series-label。例如:

代码语言:javascript
复制
(def c (scatter plot x y :legend true))
(add-lines c x1 y1 :series-label "Primary")
(add-lines c x2 y2 :series-label "Secondary")

这没有解决问题中的另一个问题:为了创建一个有图例的裸散点图,您必须将空数据传递给scatter-plot,即将xy作为上面的空序列,因为Incanter不允许您指定:legend而不将数据传递给scatter-plot。如果xy是空的(例如,它们是nil),则空数据也显示为图例元素。我不相信这个问题目前可以直接克服(1.5.7版)。

一种解决方案是在散点图调用中传递真实数据以及一个:series-label参数。但是,如果事先不知道数据集的数量,那么以编程方式生成散点图可能会更加困难,因为您必须以不同于其他数据集的方式对待第一个数据集。

另一个解决办法是:

代码语言:javascript
复制
(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)的颜色透明。否则,您将在图例中为此数据集创建一个红色点。在图例中,您将有一个小的空空间,红色点和空字符串属于那里,但这比在那里看到一个红色点更容易混淆。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9419682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档