1

我正在编写一个包含数据框的 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")

情节运行良好,但我无法将图例格式设置为下来。我想要做的是在右上角放置一个图例,将每个 Prod 显示为图表上的不同颜色数据点;但是,Prod 也需要被截断,并且只计为列中的前两个字符。

我知道我可以通过运行“mydf$Prod”来访问所有变量,但是有没有办法将该框架引用中的每个项目截断为仅两个字符。我尝试使用round,但我无法执行任何数学运算,这是有道理的。

有没有办法截断这些变量,然后将它们粘贴到保持截断格式的图例中。图例需要是动态的,因为 Prod 不断变化,我在不同的文件上运行脚本。

附加一项:理想情况下,我希望仅使用标准库来完成。我目前没有使用 ggplot 或任何其他图形库,因为我创建的图形很简单。

4

1 回答 1

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")
于 2012-10-18T19:20:38.993 回答