2013-03-19 3 views
1

Вот мой файл .csv:Как отображать метки по оси x?

dateval,links 
18/03/2013,100 
19/03/2013,200 
20/03/2013,300 
21/03/2013,400 
22/03/2013,500 

Этот файл считывается в объект с именем date1 и это код, я использую, чтобы построить график данных:

g_range <- range(0, date1$links) 
plot(date1$links, type="o", col="blue", ylim=g_range, 
    axes=FALSE, ann=FALSE) 
axis(1, xlab=date1$links) 
box() 
title(main="Additions", col.main="red", font.main=4) 
axis(2, las=1, at=50*0:g_range[2]) 
title(xlab="Date", col.lab=rgb(0,0.5,0)) 
title(ylab="# Links", col.lab=rgb(0,0.5,0)) 

Вот генерируемая график:

enter image description here

значения даты, не будучи выводится, вместо числа 1 - 5 показаны. Как я могу изменить код, чтобы он генерировал значения даты, содержащиеся в CSV-файле? Я думаю, проблема в этой строке: axis(1, xlab=date1$links)?

ответ

1

Попробуйте вместо этого:

axis(1,at=1:5,labels = date1$dateval) 

Итак, вы заметите, что если вы внимательно посмотрите на ?axis вы увидите, что нет xlab аргумента вовсе, а вторые и третьи аргументы:

at - точки, в которых должны быть нанесены отметки. Не конечные значения (бесконечные, NaN или NA) опущены. По умолчанию (при NULL) местоположения тикания вычисляются, см. «Детали» ниже.

этикетки - это может быть либо логическое значение, определяющее (числовые) аннотаций ли быть сделаны на отметки времени, или символ или вектор экспрессии меток, которые будут размещены на tickpoints. (Другие объекты принуждаются as.graphicsAnnot.) Если это не является логичным, то также должны быть поставлены и иметь такую ​​же длину. Если после принуждения метки имеют нулевую длину, то он имеет тот же эффект, что и , поставляющий TRUE.

Но на самом деле, может быть, вы должны делать что-то больше, как это:

date1$dateval <- as.Date(date1$dateval,format = "%d/%m/%Y") 
plot(date1$dateval,date1$links, type="o", col="blue", ylim=g_range, ann=FALSE,axes = FALSE) 
axis(1,at=date1$dateval,labels = date1$dateval) 

Но даже это своего рода сырой способ обработки черчения дат по сравнению с использованием пакетов/функций, специально предназначенных для этой цели.

+0

Ударьте меня к удару. Я также хотел бы добавить, что ОП может захотеть избежать будущих проблем при работе с неравномерно расположенными датами путем преобразования 'date1 $ dateval' в объект' Date'. Например. - использование 'as.Date (date1 $ dateval, format ="% d /% m /% Y ")' – thelatemail

+0

@joran количество дат динамическое, поэтому объект date1 в приведенном выше примере содержит 5 дат и значений, но в но он может содержать 10 дат и т. д. ... вместо использования 1: 5 есть ли значение параметра, которое поддерживает это? –

+0

@ user470184 (1) Рассчитайте количество строк в вашем фрейме данных. (2) перейти к 'at' последовательности от 1 до количества строк в вашем кадре данных. – joran

Смежные вопросы