[英]plot function does not take plot type into account in R language
我有以下R脚本:
X <- read.table("/tmp/run178/data/monitor/portal_free_heap_monitor.log", header=T, sep=";")
P1 <- subset(X, Server=="PortalServer1")
P2 <- subset(X, Server=="PortalServer2")
png("mygraph.png")
plot(P1$Time, P1$HeapFreePercent, type="l", col="red")
lines(P2$Time, P2$HeapFreePercent, col="green")
q()
在得到的PNG图像中,“PortalServer1”的数据用点和黑色绘制,但它应该用红线绘制。 另一个用绿线预期绘制。 我究竟做错了什么?
编辑 :这是X的结构:
> str(X)
'data.frame': 5274 obs. of 3 variables:
$ Time : Factor w/ 2654 levels "2011.08.24 14:39:29",..: 1 1 2 2 3 3 4 4 5 5 ...
$ Server : Factor w/ 2 levels "PortalServer1",..: 1 2 1 2 1 2 1 2 1 2 ...
$ HeapFreePercent: int 42 49 41 49 41 49 41 49 41 49 ...
@GavinSimpson已经评论过如何解决您的问题。 这应该是一个评论,但太长了。 我只是用原始形式的数据解释你的情节发生了什么。
您正在绘制类型factor
数据。 因此,当您调用函数plot
,S3方法调度将调用plot.factor
。
如果您阅读了?plot.factor
的帮助,您会注意到您获得的绘图类型也取决于您的第二个参数的类型。 由于这也是一个因素,最终你的情节是由spineplot
绘制的。 因此,你的type="l"
基本上被忽略了。 颜色以红色绘制,但......
逆向工程你的数据,我得到这样的东西:
X <- data.frame(
Time = sort(sample(letters, 100, replace=TRUE)),
Server = sample(c("PortalServer1", "PortalServer2"), 100, replace=TRUE),
HeapFreePercent = runif(100))
str(X)
P1 <- subset(X, Server=="PortalServer1")
P2 <- subset(X, Server=="PortalServer2")
plot(P1$Time, P1$HeapFreePercent, type="l", col="red")
lines(P2$Time, P2$HeapFreePercent, col="green")
一个有点hacky的解决方案,但它适用于所有因素,而不仅仅是时间戳。
更改
plot(P1$Time, P1$HeapFreePercent, type="l", col="red")
lines(P2$Time, P2$HeapFreePercent, col="green")
至
plot(P1$Time, P1$HeapFreePercent, type="n")
lines(P1$Time, P1$HeapFreePercent, type="l", col="red")
lines(P2$Time, P2$HeapFreePercent, col="green")
此代码首先不绘制实际数据,只绘制轴。 然后它使用lines
绘制真实数据,这避免了调用plot.factor
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.