这里的上下文是统计计算的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