私はggplot2で時系列をプロットしようとしています。私は次のようなデータ構造を使用していますと仮定(2500×20のマトリックス):私が見つけた何変数を経時的にプロットする方法
ggplot(aa, aes(x=time,y=value,colour=id,group=id)) +
geom_line()
がある:今すぐ
set.seed(21)
n <- 2500
x <- matrix(replicate(20,cumsum(sample(c(-1, 1), n, TRUE))),nrow = 2500,ncol=20)
aa <- x
rnames <- seq(as.Date("2010-01-01"), length=dim(aa)[1], by="1 month") - 1
rownames(aa) <- format(as.POSIXlt(rnames, format = "%Y-%m-%d"), format = "%d.%m.%Y")
colnames(aa) <- paste0("aa",1:k)
library("ggplot2")
library("reshape2")
library("scales")
aa <- melt(aa, id.vars = rownames(aa))
names(aa) <- c("time","id","value")
次のコマンドの時系列をプロットするには、奇妙な探してx軸を生成します今までのフォーマットを変更することができます:
aa$time <- as.Date(aa$time, "%d.%m.%Y")
ggplot(aa, aes(x=time,y=value,colour=id,group=id)) +
geom_line()
これは良く見えますが、まだ良いグラフではありません。私の質問は、特にx軸の書式を制御する方法です。 Date
形式である必要がありますか?どちらの場合に表示される休憩(年)の量を制御するにはどうすればよいですか? Date
を使用しない場合は必須と思われます。さもなければ、ggplot2は私が信じている休憩に何か有益なデフォルトを使います。 たとえば、次のコマンドが動作しない:あなたが得た場合
aa$time <- as.Date(aa$time, "%d.%m.%Y")
ggplot(aa, aes(x=time,y=value,colour=id,group=id)) +
geom_line() +
scale_x_continuous(breaks=pretty_breaks(n=10))
をまた、グラフの全体的な外観を向上させるためにどのように任意のヒントが(例えば、行は私見inpreciseビットを見て)を追加して自由に感じます。
あなたはおそらく、サンプルの入力データと出力期待して、最小限の例を投稿することができますか? '?scale_date'を試してみて、おそらく' scale_x_date'の中に? – Gopala
@Gopalaどういう意味ですか?私は上記のMWEを提供しましたか?まあ、私が 'ggplot(aa、aes(x = time、y = value、color = id、group = id))+ geom_line()'を使用した場合、軸の開始点は全く表示されません。日付形式なし。私は、x軸を適切に制御する方法、またそこに時間がない代わりに別の変数を使用する方法についても不思議に思っていました。しかし、私はこの特定のケースでは、日付形式で作業するのが最も簡単だと思います。 – user3032689
申し訳ありませんが、あなたが提供していないというわけではありませんでした。あなたの問題/質問があなたが提供したコードよりずっと簡単なようです。私はさらに小さな例で十分であると思っていた。うん、日付を使って作業し、 'scale_date'を使うのは良いことです。詳細な説明はありがとうございます。 – Gopala