3

ggplot2 0.9.0のドキュメント、0.9.0の移行ガイド、または検索で情報が見つからないようです。

tz以前のバージョンでは、引数をに追加すると思いますscale_x_datetimetz引数を内のさまざまな場所に配置しようとしましたscale_x_datetimeが、エラーが発生し続けます。下記参照。

私の日時データはPOSIXctGMTタイムゾーンの形式です。プロットすると、軸の目盛りと切れ目がローカルタイムゾーン(EST)を示しています。軸の真夜中をGMTタイムゾーンの真夜中にしたいと思います。ggplot2 0.9.0でこれを行う正しい方法は何ですか?

attributes(data$date)
# $class
# [1] "POSIXct" "POSIXt" 

# $tzone
# [1] "GMT"

ggplot(data, aes(x = date)) +
  geom_line(aes(y = count)) +
  scale_x_datetime(breaks = date_breaks("1 day"),
                   labels = date_format("%d", tz = "UTC"))
# Error in date_format("%d", tz = "UTC") : unused argument(s) (tz = "UTC")

ggplot(data, aes(x = date)) +
  geom_line(aes(y = count)) +
  scale_x_datetime(breaks = date_breaks("1 day", tz = "UTC"),
                   labels = date_format("%d"))
# Error in date_breaks("1 day", tz = "UTC") : 
#   unused argument(s) (tz = "UTC")

ggplot(data, aes(x = date)) +
  geom_line(aes(y = count)) +
  scale_x_datetime(breaks = date_breaks("1 day"),
                   labels = date_format("%d"),
                   tz = "UTC")
# Error in continuous_scale(aesthetics, "datetime", identity, breaks = breaks,  : 
#   unused argument(s) (tz = "UTC")
4

2 に答える 2

5

@joranは正しい方向に進んでいますが、追加の引数をフォーマット関数に渡すことはできないため、ジェネレーター関数に渡す必要があります。

date_format_tz <- function(format = "%Y-%m-%d", tz = "UTC") {
  function(x) format(x, format, tz=tz)
}

これは、次のように呼び出すことができます。

scale_x_datetime(breaks = date_breaks("1 day"),
                 labels = date_format_tz("%d", tz="UTC"))
于 2012-06-12T18:04:06.063 に答える
5

スケール2.2(〜jul 2012)以降、引数をに渡すことができtzますtime_trans

たとえば、タイムスタンプをUTCでフォーマットし、追加のコーディングは必要ありません。

+scale_x_continuous(trans = time_trans(tz = "UTC"))
于 2013-05-12T12:15:44.443 に答える