Функция plot не учитывает тип сюжета на языке R - PullRequest
8 голосов
/ 25 августа 2011

У меня есть следующий скрипт 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 ...

Ответы [ 2 ]

8 голосов
/ 25 августа 2011

@ GavinSimpson уже прокомментировал, как решить вашу проблему.Это должен был быть комментарий, но он слишком длинный.Я просто объясняю, что случилось с вашим графиком, с вашими данными в их первоначальном виде.

Вы наносите данные типа factor.Следовательно, когда вы вызываете функцию plot, диспетчеризация метода S3 вызовет plot.factor.

Если вы прочитаете справку для ?plot.factor, вы заметите, что тип получаемого вами графика также зависит оттип вашего второго параметра.Так как это тоже фактор, в конечном итоге ваш сюжет нарисован на spineplot.Таким образом, ваш type="l" по существу игнорируется.Цвет показан красным

0 голосов
/ 02 марта 2017

Несколько хакерское решение, но оно работает для всех факторов, а не только для отметок времени.

Измените

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...