Как построить график, используя все даты по оси X, используя R? - PullRequest
0 голосов
/ 10 апреля 2020

Я использую данные

Date of acquisition Bperp(m)
29/01/2020  0.00 
10/02/2020  -23.22 
22/02/2020  15.03 
17/01/2020  8.85 
30/12/2019  -26.13 
06/12/2019  7.35 
18/12/2019  -31.04 
11/01/2020  19.40 
23/01/2020  12.44 
16/02/2020  -25.21 
04/02/2020  -6.45 
28/02/2020  70.35 

Мне нужно вывести вышеуказанные данные в

Целевой график

Вот код I б

library(tidyverse)
library(readxl)


data <- readxl::read_excel("Sentinel-1 Metadata info.xls")
centroid <- slice(data,1)

data %>% 
  ggplot(aes(`Date of acquisition`, `Bperp(m)`)) +
  geom_point() +
  geom_segment(aes(x = centroid$`Date of acquisition`, y = centroid$`Bperp(m)`, 
                   xend = `Date of acquisition`, yend = `Bperp(m)`)) +
  theme_minimal()

Я получил такой график

Но я хочу отобразить все даты в формате DDMMYYYY.

Как это сделать это?

Обсуждение Форматирование дат по оси X в ggplot2 не исправляет мою проблему.

1 Ответ

0 голосов
/ 10 апреля 2020

Вы можете отформатировать ось так, как вам нравится, используя scale_x_Date и указав формат маркировки через label=format_date(format=...). Для этого вам необходимо сначала преобразовать столбец «Дата приобретения» в class Date, а не в class POSIXct, POSIXt. Это другие форматы даты, но ggplot, похоже, не понравится, если я не заставлю его быть Date.

Специальное примечание: Я также удалил пробелы в ваших исходных заголовках данных и скобках, потому что это плохая практика, так как синтаксис там мешает синтаксису в вашем коде. Вы всегда можете изменить наименование на графике после этого и сделать вызовы для очистки ваших данных. Кроме того, лучше не использовать вызовы переменных data.frame $ в функциях ggplot, где вы должны указывать только имя переменной (не в кавычках) для эстетики, за исключением случаев, когда вы строите графики между фреймами данных. Ниже вы увидите, как я это сделал в вашем случае, когда у вас есть данные, поступающие как с вашего фрейма данных, так и с центроида.

# your data frame here is called `df`.  Just my preference.
# 'Date of acquisition` was changed to be `Date_of_acquisition`
# 'Bperp(m)' was changed to 'Bperpm'

df$Date_of_acquisition <- as.Date(df$Date_of_acquisition)  # change to Date
centroid <- slice(df, 1)

ggplot(df, aes(Date_of_acquisition, Bperpm)) + geom_point() +
    geom_segment(aes(
        x = centroid$Date_of_acquisition, y = centroid$Bperpm,
        xend = Date_of_acquisition, yend = Bperpm)) +
    theme_minimal() + 
    scale_x_date(labels=date_format(format="%d-%m-%Y"))  # change format here

А вот график:

enter image description here

...