此处的上下文是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
我已经看到有关此错误消息的许多其他问题。其中一些是因为传说坐标不在图表中。其他一些人给出了解决方法,但没有解释错误发生的原因。
我的问题是:为什么我收到此错误?看起来像图例()和chartJSRadar()之间的不兼容似乎是根本错误的,但是我没有得到它。
请指教!
答案 0 :(得分:3)
如果使用R Studio,请确保运行整个块(不是ctr + enter)。我有一个类似的问题使用igraph。我试图将图例附加到图表但是有相同的错误消息。运行整个块工作。
答案 1 :(得分:1)
似乎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,我没有专业知识,所以不幸的是,这是我可以帮助你。
答案 2 :(得分:0)
尝试使用具有fmsb
功能的radarchart()
包。您可以为您的数据绘制相同的图表。
http://127.0.0.1:25882/library/fmsb/html/radarchart.html
我在R中尝试了它,它在R绘图窗口中工作。由于我不了解雷达图数据。您绝对可以使用包radarchart()
legend()
和fmsb
使用图例来完成此操作