2014-10-22 2 views
1

У меня возникла проблема с созданием настраиваемых осей в базовой системе построения в R, у меня есть следующий фрейм данных, для которого я хочу построить тренд, чтобы показывать изменения за каждый год:Получение ошибок при создании настраиваемых осей

year <- c(2000, 2002, 2005, 2009) 
values <- c(7332967, 5332780, 5135760, 3464206) 
x <- data.frame(year, values) 

##  year values 
## 1 2000 733296 
## 2 2002 533278 
## 3 2005 513576 
## 4 2009 346420 

Моя первая попытка:

plot(x$year, x$value, 
    xlab = "Year", 
    ylab = "Value", 
    type = "b") 

Однако, что дает мне перекос оси х и у для четырех значений я имею в кадре данных. Я хотел бы, чтобы ось x содержала только четыре значения под столбцом «год» и осью y, чтобы содержать только четыре значения в столбце «значения».

Для этого я пытался создать пользовательскую ось х и у, но это привело к ошибкам:

plot(x$year, x$value, 
    type = "b", 
    xaxt = "n", 
    yaxt = "n", 
    xlab = "Year", 
    ylab = "Values", 
    axis(1, at = 1:nrow(x), labels = x$year), 
    axis(2, at = 1:nrow(x), labels = x$value)) 

"Error in plot.window(...) : invalid 'xlim' value" 

и:

plot(x$year, x$value, 
    type = "b", 
    xaxt = "n", 
    yaxt = "n", 
    xlab = "Year", 
    ylab = "Values", 
    axis(1, at = 1:nrow(x), labels = x$year), 
    axis(2, at = 1:nrow(x), labels = x$value), 
    xlim = c(min(data_plot$year), max(data_plot$year)), 
    ylim = c(min(data_plot$Emissions), max(data_plot$Emissions))) 

"Error in strsplit(log, NULL) : non-character argument" 

Я совершенно новый для R и пытался искать решения на однако, по-видимому, ничто не решит проблему, поэтому любая предоставленная помощь будет высоко оценена.

ответ

0

axis является отдельной функцией, а не аргумент plot, поэтому попробуйте следующее:

# First make some extra space on the left for the long numeric axis labels 
par(mar=c(5, 6, 1, 1)) 
# Now plot the points, but suppress the axes 
plot(x$year, x$values, xaxt='n', yaxt='n', xlab='Year', ylab='', type='b') 
# Add the axes 
axis(1, at=x$year, labels=x$year, cex.axis=0.8) 
axis(2, at=x$values, labels=x$values, las=1, cex.axis=0.8) 
# Add the y label a bit further away from the axis 
title(ylab='Value', line=4) 

enter image description here