0

x 軸にプロットされる、0 から 23 までの数字を含む数値変数があります。a)Dateで視覚化するために、これらの時間をオブジェクトに変換する必要がありggplot、b) x axis は、これらの数値を am/pm 形式で表示します。

これまでのところ、私は持っています:

library("ggplot2")
library(scales)
Sys.setlocale(category = "LC_ALL", locale = "English")
# data
hod <- structure(list(h = c(0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L), 
t = c(NA, 2L, 4L, 1L, 3L, NA, 2L, 4L, 1L, 3L), n = c(226L, 
226L, 226L, 226L, 226L, 226L, 226L, 226L, 226L, 226L), mean = c(4.52654867256637, 
33.6769911504425, 6.34513274336283, 30.3672566371681, 0.309734513274336, 
2.84513274336283, 20.0088495575221, 3.38938053097345, 17.7787610619469, 
0.101769911504425), std = c(2.74131025125736, 13.4781731703065, 
3.0316031901839, 10.9165210711549, 0.603524251739029, 2.25142987605743, 
10.9354466064168, 2.27892859595505, 8.76056582129717, 0.33032092222724
)), .Names = c("h", "t", "n", "mean", "std"), row.names = c(NA, 
10L), class = "data.frame")



ggplot(hod, aes(x=h, y=mean, colour=as.factor(t))) + 
geom_line(size = .1) +
geom_point() +
theme_minimal()

hod$h実際には まで続きますが、スペースの都合上、と23のみを含めました。私が欲しいのは、表示するx軸、またはこのようなものです。そんなに難しくないですか?オブジェクトを必要とするものを試してみましたが、オリジンの扱い方がわからなかったので失敗しました - 何時間もオリジンはありません!016am, 9am, 12am, 3pm, 6pm, 9pm, 12pmscale_x_dateDate

4

2 に答える 2

3

strftime必要に応じて時間をフォーマットし、これをx美学として使用できます。次に、グループ化の美学も使用する必要があります。lubridate私たちは何時間も働きやすいように使用しています。これを試して:

require(lubridate)    
hod$time <- tolower( strftime( Sys.Date()+hours(hod$h) , "%I %p" ) )
# [1] "12 am" "12 am" "12 am" "12 am" "12 am" "01 am" "01 am" "01 am" "01 am" "01 am"

ggplot(hod, aes( x = time , y=mean, colour=as.factor(t) , group = t ) ) + 
geom_line(size = .1) +
geom_point()

ここに画像の説明を入力

于 2013-08-29T12:16:32.370 に答える