我正在编写一个包含数据框的R脚本。 数据框具有以下外观:
mydf <= read.csv('file', header = TRUE, sep=",")
mydf
....Prod Date AVG
189 CA123 2012/07/24 14:32:35 0.2424 0.22 0.25 0.27
190 JK489 2012/08/25 18:29:08 0.2402 0.22 0.25 0.27
191 CA15K 2012/07/24 13:49:07 0.2427 0.22 0.25 0.27
192 JA45A 2012/07/22 02:32:40 0.2455 0.22 0.25 0.27
193 JA3HS 2012/07/24 22:26:25 0.2410 0.22 0.25 0.27
194 CA429 2012/08/28 10:36:16 0.2351 0.22 0.25 0.27
195 JK345 2012/07/25 07:11:24 0.2419 0.22 0.25 0.27
...
我正在使用此代码绘制数据:
plot(Date,mydf$AVG,xlab='Date',ylab='AVG',main='title')
legend("topright", legend = c(" "," "), text.width = strwidth("1,000,000"), lty = 1:2, xjust = 1, yjust = 1, title = "Prods")
情节工作正常,但我无法将Legend格式化下来。我想要做的是在右上方放置一个图例,它将每个Prod显示为图表上的不同颜色数据点;但是,Prod也需要被剔除,只计算在列中的前两个字符。
我知道我可以通过运行:`mydf $ Prod'来访问所有变量,但有没有办法将该帧引用中的每个项目截断为两个字符。我尝试使用round,但我无法执行任何数学运算,这是有道理的。
有没有办法截断这些变量,然后将它们粘贴到图例中,保留截断的格式。图例需要是动态的,因为Prod不断变化,我在不同的文件上运行脚本。
另外一项:理想情况下,我希望仅使用标准库来完成此操作。我目前没有使用ggplot或任何其他图形库,因为我创建的图表很简单。
答案 0 :(得分:3)
试试这个:
mydf$Labels = substr(mydf$Prod, 1, 2)
f = factor(mydf$Labels)
l = levels(f)
plot(mydf$Date, mydf$Avg, xlab="Date", ylab="Avg", col=f)
legend("topright", legend = l, fill = 1:length(l), title = "Prods")