Линейный график в R не показывает линию, но изменения в каждой точке
Я пытаюсь построить линейный график для температурных временных рядов. Вместо точной линии он показывает изменения в каждой точке.
Я написал этот код для этого графика
temp<-read.csv("E:/Salford Work/Data Mining/Data/Tensor houses/8 John boste court/temReadings (5).csv");
rdate <- as.Date(temp$Date.Time, "%d/%m/%Y %H:%M");
plot(temp$Reading~rdate, type="l", col="blue", axes=F);
axis(1,rdate,format(rdate,"%d-%m-%y"));
read<-temp[,4];
axis(2,read);
Может кто-нибудь, пожалуйста, помогите мне нарисовать простую линию.
1 ответ
Обычно это происходит из-за категориальной переменной x-оси. Я не уверен, что это так, потому что вы, кажется, обратились в as.Date
, Тем не менее, я бы избежал формулы (~
) нотация, когда не вызывается информационный фрейм в функции построения графика:
plot(rdate, temp$Reading, type="l", col="blue", axes=F)
В любом случае, убедитесь, что class(rdate)
возвращается "Date"
,
Редактировать:
Проблема в том, что часы, минуты и секунды удаляются из ваших данных при использовании as.Date
и большинство ваших дат в один и тот же день - таким образом вы теряете разрешение. Вместо этого вы должны использовать формат "POSIXlt" или "POSIXct" и использовать strptime
функция для преобразования:
temp <- structure(list(Sensor.ID = c(1L, 1L, 1L, 1L, 7L, 1L, 7L, 1L,
7L, 1L), Building.ID = c(155L, 155L, 155L, 155L, 155L, 155L,
155L, 155L, 155L, 155L), Date.Time = structure(1:10, .Label = c("25/09/2014 16:28:58",
"25/09/2014 16:29:58", "25/09/2014 16:30:58", "25/09/2014 16:31:58",
"25/09/2014 16:32:11", "25/09/2014 16:32:58", "25/09/2014 16:33:11",
"25/09/2014 16:33:58", "25/09/2014 16:34:11", "25/09/2014 16:34:58"
), class = "factor"), Reading = c(23.77, 24.12, 24.18, 24.04,
24.27, 23.88, 24.92, 23.65, 25.16, 23.41)), .Names = c("Sensor.ID",
"Building.ID", "Date.Time", "Reading"), class = "data.frame", row.names = c(NA,
10L))
rdate <- strptime(temp$Date.Time, "%d/%m/%Y %H:%M")
class(rdate)
plot(rdate, temp$Reading, type="l", col="blue")
axis(1,rdate,format(rdate,"%d-%m-%y"))