r - R 语言中的 plot 函数不考虑绘图类型

标签 r plot visualization

我有以下 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()

在结果中,“PortalServer1”的 PNG 图像数据用点和黑色绘制,但它应该用红线绘制。另一个是用绿线按预期绘制的。我究竟做错了什么?

编辑 : 这是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")

enter image description here

关于r - R 语言中的 plot 函数不考虑绘图类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7187893/

相关文章:

graphics - 如何使用 R 创建一个 "inkblot"图表?

php - 将 int 转换为 RGB。 PHP 和 HTML/CSS 中的可视化

c# - 如何渲染音频波形?

R:修改地理 map 的分辨率

r - 如何在 R 中使用带有列表的 if 语句

xml - 在R中的<td>元素内解析<br>

r - R 中 I(x^3) 和 poly(x,3) 之间的差异进行回归

python - Matplotlib:还显示小刻度的标签

matlab - bar3 颜色取决于 zdata

r - R 中的并排森林图