根据R中的结果截断数据框列字符并更新图例

时间:2012-10-18 18:55:45

标签: r legend

我正在编写一个包含数据框的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或任何其他图形库,因为我创建的图表很简单。

1 个答案:

答案 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")