【问题标题】:Why am I getting "plot.new has not been called yet" calling legend() after chartJSRadar()为什么我在 chartJSRadar() 之后调用 legend() “plot.new 尚未被调用”
【发布时间】:2016-07-26 18:45:14
【问题描述】:

这里的上下文是 R Project for Statistical Computing

考虑以下代码(来自 chartJSRadar 文档)

library(radar chart)
labs <- c("Communicator", "Data Wangler", "Programmer",
      "Technologist",  "Modeller", "Visualizer")

scores <- list(
  "Rich" = c(9, 7, 4, 5, 3, 7),
  "Andy" = c(7, 6, 6, 2, 6, 9),
  "Aimee" = c(6, 5, 8, 4, 7, 6)
)

chartJSRadar(scores = scores, labs = labs, maxScale = 10)

我想在使用中添加一个图例:

legend("topleft", c("Rich","Andy","Aimee"), cex=0.8, fill=colors)

但我收到以下错误:

Error in strwidth(legend, units = "user", cex = cex, font = text.font) : 
  plot.new has not been called yet

我已经看到了许多关于此错误消息的其他问题。其中一些是因为图例坐标不在图表中。其他一些人提供了解决方法,但没有解释错误发生的原因。

我的问题是:为什么会出现此错误?似乎从根本上来说是错误的,例如 legend() 和 chartJSRadar() 之间的不兼容,但我不明白。

请指教!

【问题讨论】:

  • 这是一个链接,我可以在其中看到您的情节图例:stackoverflow.com/questions/23206354/…
  • 感谢您的留言。正如 Sowmya 建议的那样,它确实使用 fmsb 而不是radarchart

标签: r legend chart.js


【解决方案1】:

如果使用 R Studio,请确保运行整个块(不是 ctr + enter)。我在使用 igraph 时遇到了类似的问题。我试图将图例附加到图表但有相同的错误消息。运行整个块有效。

【讨论】:

    【解决方案2】:

    似乎chartJSRadar 没有调用绘图,而是在查看器中显示交互式绘图。因此不调用绘图,您不能使用legend()。从chartJSRadar 的文档中,似乎确实有雷达图的图例选项,请参阅http://www.chartjs.org/docs/#radar-chart-chart-options:

    //String - A legend template
    legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
    

    这是 JavaScript,我没有这方面的专业知识,所以很遗憾,我只能为您提供帮助。

    【讨论】:

    • “因此没有调用绘图并且您不能使用 legend()”。这几乎回答了我的问题。请帮助我了解它在 R 中的情况。我怎么知道“交互式情节”不是“常规情节”?是否记录在案?这是我缺少的概念吗?有多少种不同类型/类别的地块?
    • @Chocksmith 您的绘图在 html 文档中打开,其中大多数绘图都绘制在 R 自己的图形设备窗口中。
    • 我认为您不应该知道,除非您使用 RStudio,否则您的绘图会显示在查看器窗格中,因为正如 @SowmyaS.Manian 所述,它是一个 html 文档。 Web content is shown in the viewer pane.
    【解决方案3】:

    尝试使用具有radarchart() 功能的fmsb 包。您可以为您的数据绘制相同的图。

    http://127.0.0.1:25882/library/fmsb/html/radarchart.html

    我在 R 中尝试过,它在 R 绘图窗口中工作。由于我不了解雷达图数据。您肯定可以使用 radarchart() 和 legend()using 包 fmsb 处理图例

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2019-08-30
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多