2017-10-20 5 views
0
  Hour CrimeFreq  
1 1:00:00 AM 547 
2 1:00:00 PM 543 
3 10:00:00 AM 472 
4 10:00:00 PM 735 
5 11:00:00 AM 464 
6 11:00:00 PM 667 
7 12:00:00 AM 741 
8 12:00:00 PM 629 
9 2:00:00 AM 601 
10 2:00:00 PM 577 
11 3:00:00 AM 383 
12 3:00:00 PM 570 
13 4:00:00 AM 215 
14 4:00:00 PM 611 
15 5:00:00 AM 159 
16 5:00:00 PM 703 
17 6:00:00 AM 189 
18 6:00:00 PM 671 
19 7:00:00 AM 235 
20 7:00:00 PM 646 
21 8:00:00 AM 349 
22 8:00:00 PM 589 
23 9:00:00 AM 422 
24 9:00:00 PM 684 

je les données ci-dessus (agrégées à partir d'un ensemble de données plus large) i en fonction d'un diagramme de ligne en utilisant ggplotRe ordre axe des x en ggplot si le temps passe 00 heures-23 heures dans R

ggplot(Time.Assault2014, aes(x=Hour, y= CrimeFreq, group=1)) + geom_line() 

Le graphique est comme ceci:

enter image description here

est-il possible que je peux commander l'axe des x pour aller 00 heures-23 heures? Je veux montrer comment CrimeFreq change tout au long de la journée.

Fondamentalement, je veux qu'il ressemble à ceci (de tableau)

enter image description here

Répondre

0
library(dplyr) 

df2 <- df %>% 
    mutate(time = strptime(Hour, format="%I:%M:%S %p") %>% format(., "%H")) 

ggplot(df2, aes(time, CrimeFreq, group=1)) + 
     geom_line() 

enter image description here

EDIT: Ajouté plus robuste temps de codage et de scale_x_datetime pour reproduire le graphique de tableau.

df2 <- df %>% 
     mutate(time = as.POSIXct(strptime(Hour, format="%I:%M:%S %p", tz="Singapore"))) 

ggplot(df2, aes(time, CrimeFreq, group=1)) + geom_line() + 
    scale_x_datetime(date_breaks = "2 hour", 
        labels = function(x) format(x, format = "%I%p", tz="Singapore")) 

enter image description here

+0

Merci! J'ai trouvé un moyen de renommer les marques de graduation de l'axe des x afin qu'il ressemble à celui dans le tableau, merci beaucoup! – NVerde

+0

@NVerde a édité le code ci-dessus pour un codage temporel légèrement plus robuste dans ggplot. Timezone pourrait être une chienne bien. –