r语言 - 为什么我在chartJSRadar()之后调用legend() "plot.new尚未被调用"



这里的上下文是统计计算的R项目

考虑以下代码(来自图表JSRadar文档)

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()之间的不兼容,但我不明白

请告知!

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

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

//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,我对它没有任何专业知识,所以不幸的是,这是我所能帮助你的。

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

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

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

最新更新