отображение даты (день, месяц, год) на оси x графика

#r #date #plot #axis

#r #Дата #сюжет #ось

Вопрос:

Я хотел бы отобразить соответствующую дату на оси x. Однако дата меняется на оси в зависимости от того, какие данные показаны на графике. Например: иногда он показывает только пару месяцев, если данные только за 2020 год, а иногда он показывает только 2020, 2021 годы и ни одного месяца. Как я могу дать команду отображать только месяцы, только годы или и то, и другое?

Моя вторая проблема-это изменение между моими осями x и y. Сначала они были правильными, но теперь оси по какой-то причине поменялись местами. Как я могу поместить дату по оси x и расстояние(км) по оси y?

Мой набор данных вызывается pattern1 , и я попробовал следующее ниже:

 library(pals) colors2 lt;- polychrome(n=36) library(spatialrisk)  patternDO lt;- pattern1[pattern1$Transmitter == "A69-1602-59771",] Loc lt;- unique(patternDO$Location.Receiver) plot(patternDO$Date, patternDO$Distance_km, xlim = , ylim = , xlab="Date", ylab="Distance from batch (km)", pch=NA) legend(x = "topright", inset = c(-0.5,0), legend = Loc, col = colors2, title="Den Oever", cex = 0.5, pch = 16)  for(j in 1:length(Loc)){  loc.rec lt;- patternDO[patternDO$Location.Receiver == Loc[j],]  points(loc.rec$Date, loc.rec$Distance_km, xlim = range(patternDO$Date), pch=18, cex=1.0, col= colors2[j]) }  
 structure(list(Day = c("20", "21", "06", "09", "11", "12", "15",  "09", "11", "04", "07", "08", "19", "04", "05", "13", "15", "16",  "17", "18", "20", "21", "22", "27", "29", "30", "01", "02", "06",  "07", "08", "09", "10", "11", "12", "05", "06", "19", "20", "07",  "11", "12", "14", "15", "16", "23", "24", "25", "26", "27", "28",  "02", "03", "04", "05", "06", "07", "14", "15", "22"), Month = c("05",  "05", "05", "05", "05", "05", "05", "06", "03", "05", "05", "05",  "05", "06", "06", "11", "11", "11", "11", "11", "11", "11", "11",  "11", "11", "11", "12", "12", "12", "12", "12", "12", "12", "12",  "12", "01", "01", "01", "01", "02", "02", "02", "02", "02", "02",  "02", "02", "02", "02", "02", "02", "03", "03", "03", "03", "03",  "03", "04", "04", "04"), Year = c("2020", "2020", "2021", "2021",  "2021", "2021", "2021", "2021", "2020", "2020", "2020", "2020",  "2020", "2020", "2020", "2019", "2019", "2019", "2019", "2019",  "2019", "2019", "2019", "2019", "2019", "2019", "2019", "2019",  "2019", "2019", "2019", "2019", "2019", "2019", "2019", "2020",  "2020", "2020", "2020", "2020", "2020", "2020", "2020", "2020",  "2020", "2020", "2020", "2020", "2020", "2020", "2020", "2020",  "2020", "2020", "2020", "2020", "2020", "2020", "2020", "2020" ), Location.Receiver = c("Medemblik Ijsselmeer, inlaat", "Medemblik Ijsselmeer, inlaat",  "Medemblik Ijsselmeer, inlaat", "Medemblik Ijsselmeer, inlaat",  "Medemblik Ijsselmeer, inlaat", "Medemblik Ijsselmeer, inlaat",  "Medemblik Ijsselmeer, inlaat", "Medemblik Ijsselmeer, inlaat",  "Makkum Ijsselmeer", "Makkum Ijsselmeer", "Makkum Ijsselmeer",  "Makkum Ijsselmeer", "Makkum Ijsselmeer", "Makkum Ijsselmeer",  "Makkum Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer", "Stavoren Ijsselmeer", "Stavoren Ijsselmeer",  "Stavoren Ijsselmeer"), Transmitter = c("A69-1602-59773", "A69-1602-59773",  "A69-1602-59775", "A69-1602-59775", "A69-1602-59773", "A69-1602-59773",  "A69-1602-59775", "A69-1602-59773", "A69-1602-59774", "A69-1602-59774",  "A69-1602-59774", "A69-1602-59774", "A69-1602-59774", "A69-1602-59774",  "A69-1602-59774", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59770", "A69-1602-59770", "A69-1602-59770",  "A69-1602-59770", "A69-1602-59778"), Batch.location = c("Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever", "Den Oever",  "Den Oever", "Den Oever", "Den Oever", "Den Oever"), BatchNr = c(5,  5, 7, 7, 5, 5, 7, 5, 6, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2,  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10), Latitude = c(52.73978,  52.73978, 52.73978, 52.73978, 52.73978, 52.73978, 52.73978, 52.73978,  53.05562, 53.05562, 53.05562, 53.05562, 53.05562, 53.05562, 53.05562,  51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778,  51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778,  51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778,  51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778,  51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778,  51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778, 51.87778,  51.87778, 51.87778, 51.87778), Longitude = c(5.14755, 5.14755,  5.14755, 5.14755, 5.14755, 5.14755, 5.14755, 5.14755, 5.3815,  5.3815, 5.3815, 5.3815, 5.3815, 5.3815, 5.3815, 5.3611, 5.3611,  5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611,  5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611,  5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611,  5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611,  5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611, 5.3611,  5.3611, 5.3611, 5.3611), Date = structure(c(18402, 18403, 18753,  18756, 18758, 18759, 18762, 18787, 18332, 18386, 18389, 18390,  18401, 18417, 18418, 18213, 18215, 18216, 18217, 18218, 18220,  18221, 18222, 18227, 18229, 18230, 18231, 18232, 18236, 18237,  18238, 18239, 18240, 18241, 18242, 18266, 18267, 18280, 18281,  18299, 18303, 18304, 18306, 18307, 18308, 18315, 18316, 18317,  18318, 18319, 18320, 18323, 18324, 18325, 18326, 18327, 18328,  18366, 18367, 18374), class = "Date"), Distance_km = c(21.6573593129425,  21.6573593129425, 21.6573593129425, 21.6573593129425, 21.6573593129425,  21.6573593129425, 21.6573593129425, 21.6573593129425, 27.1352921526802,  27.1352921526802, 27.1352921526802, 27.1352921526802, 27.1352921526802,  27.1352921526802, 27.1352921526802, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913, 118.410511308913,  118.410511308913, 118.410511308913, 118.410511308913)), row.names = c(891412L,  955710L, 1059292L, 1065023L, 948999L, 868059L, 1002935L, 954036L,  986970L, 966667L, 965406L, 982523L, 967432L, 969213L, 980790L,  799297L, 801897L, 795265L, 799017L, 803111L, 802007L, 800569L,  794799L, 804556L, 800332L, 801315L, 803927L, 802759L, 800919L,  795980L, 793262L, 802643L, 802404L, 792964L, 802448L, 801798L,  798878L, 801070L, 796056L, 792945L, 799448L, 803204L, 797972L,  799537L, 802516L, 805170L, 800636L, 791667L, 802820L, 800930L,  799821L, 802898L, 804767L, 805158L, 795870L, 801961L, 791160L,  803578L, 803710L, 1231075L), class = "data.frame")  

Комментарии:

1. В ggplot2 нем , как правило, достаточно хороший механизм для определения красивых осей при использовании дат (и меток времени); Я не знаю, что базовые функции R имеют такой же хороший механизм для этого. Я предлагаю простую вспомогательную функцию, которая принимает диапазон по оси x и определяет (на основе простой эвристики), должна ли она показывать годы, месяцы, дни или что-то подобное. А затем выведите либо (а) только местоположения x ( Date ), либо (б) местоположение x и красиво напечатанное представление, основанное на промежутке. Например (для b), если интервал равен годам, отображение может быть просто "%Y" , в этом нет необходимости "%Y-%m" и т. Д.

2. (Возможно, я ошибаюсь … если кто — нибудь знает о a Date -или POSIXt -осведомленном axisTicks или подобном, пожалуйста, скажите что-нибудь!)