#r
Вопрос:
Для следующих входных данных,
Date Visits
11/1/2010 696537
11/3/2010 799355
11/4/2010 805800
11/5/2010 701262
11/6/2010 531579
11/7/2010 690068
11/8/2010 756947
11/10/2010 701768
11/11/2010 820113
11/12/2010 645259
Когда я запускаю следующий код, я вижу, что 11/3/2010 все еще занимает место. Есть ли способ удалить место, занятое этой датой на графике? Каков общий метод пропуска всех дат, отсутствующих в данных?
f$Date <- as.Date(f$Date, "%m/%d/%Y")
plot(Visits ~ Date, f, xaxt = "n", type = "l")
axis(1, f$Date, format(f$Date, "%b %d"), cex.axis = .7)
Комментарии:
1. Вы пытаетесь создать ось x, которая не соизмерима с фактическим прошедшим временем? (Я предполагаю, что вы хотели написать, что 2/2/2010 все еще создает разрыв между 11/3/ и 11/1.) Если это так, то используйте seq_along(Дата) в качестве оси X. Я думаю, что это должно работать в формуле, но если нет, то используйте вызов в стиле построения графика(x=…, y=..).
2. Нет. Я хочу удалить пробел на 11/2/2010 в дополнение к тому, чтобы не показывать галочку на 11/2/2010.
3. Ваш код включает в себя все
f$Date
вaxis(.)
. Почему вы думаете, что R должен явно игнорировать аргументыat=
иlabels=
?4. Я не знаю. Вы можете показать мне код, который не позволяет дате, не появившейся в данных, занимать пробелы.
5. Ваша
x
ось непрерывна, поэтому она соответствующим образом сохранит промежутки. Если вы хотите, чтобы он был категориальным, вам нужно изменить свои данные сDate
класса на строки. Однако мне это кажется странным: пробелы во временной шкале актуальны, даже если в них нет данных.
Ответ №1:
Поскольку вы, похоже, не поняли мой комментарий, я включаю его сюда после тестирования. Базовая шкала по оси х теперь является целыми числами, начиная с 1.
f <- read.table(text="Date Visits
11/1/2010 696537
11/3/2010 799355
11/4/2010 805800
11/5/2010 701262
11/6/2010 531579
11/7/2010 690068
11/8/2010 756947
11/10/2010 701768
11/11/2010 820113
11/12/2010 645259", head=T)
f$Date <- as.Date(f$Date, "%m/%d/%Y")
plot(Visits ~ seq_along(Date), f, xaxt = "n", type = "l")
axis(1, seq_along(f$Date), format(f$Date, "%b %d"), cex.axis = .7)
Комментарии:
1. Кстати, вы знаете, какая
plot()
функция вызывается? Я хочу понять, почему формула может быть принята функцией построения. Я вижу этоplot.default plot.new plot.ts plot.design plot.spec.coherency plot.window plot.ecdf plot.spec.phase plot.xy plot.function plot.stepfun
. Но я не знаю, какой из них используется для построения формулыVisits ~ seq_along(Date)
.2. Вызываемая функция есть
plot.formula
. Если вы хотите увидеть код, вам может потребоваться ввестиgetAnywhere(plot.formula)
его на консоли, так как некоторыеplot
методы не экспортируются. Вы можете просмотреть все методы построения S3, которые в данный момент находятся в вашем рабочемmethods(plot)
пространстве . Имена функций со звездочкой в конце «скрыты».3. Когда следует использовать plot.formula? Когда следует использовать plot.default? В этом случае можно ли также использовать тип графика(x, y, …)?
4. Не уверен, что подразумевается под первым и вторым вопросами. Re #3: Я не понимаю, почему бы и нет. На самом деле, в моем комментарии прямо сказано, что это то, что я бы попробовал, если
plot.formula
бы не смог выполнитьseq_along
должным образом, когда это было в RHS формулы. Мне интересно, стоит ли вам взглянуть наhelp(pac=graphics)
и?device