17

いくつかの曲線を含むプロットを描画しようとしています。x 軸は数値ではなく文字列です。

これは正常に機能します ( R でデータ フレームのすべての列をプロットする方法と同様):

require(ggplot2)
df_ok <- rbind(data.frame(x=4:1,y=rnorm(4),d="d1"),data.frame(x=3:1,y=rnorm(3),d="d2"))
ggplot(df_ok, aes(x,y)) + geom_line(aes(colour=d))

しかし、私のデータは次のようになります。

require(ggplot2)
df_nok <- rbind(data.frame(x=c("four","three","two","one"),y=rnorm(4),d="d1"),data.frame(x=c("three","two","one"),y=rnorm(3),d="d2"))
ggplot(df_nok, aes(x,y)) + geom_line(aes(colour=d))

エラーgeom_path が表示されます。各グループは 1 つの観測のみで構成されています。グループの美学を調整する必要がありますか? . グラフの線は表示されませんが、軸はプロットされ、x 軸には正しいラベルが含まれていますが、順序も間違っています。

これをできるだけ簡単にプロットする方法はありますか? (一部のシリーズでは x 値が欠落していることにも注意してください)。

4

3 に答える 3

20

あなたの問題は、x変数が要因であることです。したがって、データ フレームを変更しxて doubleを作成します。

df = rbind(data.frame(x=4:1,y=rnorm(4),d="d1"), 
           data.frame(x=3:1,y=rnorm(3),d="d2"))

通常どおりプロット

g = ggplot(df, aes(x,y)) + geom_line(aes(colour=d))

ただし、x 軸のスケーリングを明示的に変更します。

g + scale_x_continuous(breaks=1:4, labels=c("one", "two", "three", "four")) 

変数の名前を変更するには、次のようにしてください。

x1 = factor(df_nok$x, 
            levels=c("one", "two", "three", "four"), 
            labels=1:4)
df$x1 = as.numeric(x1)
于 2012-05-08T10:42:12.323 に答える
7

ダミーグループを追加することで、ggplotに線を引くように説得できます。

ggplot(df_nok, aes(x,y)) + geom_line(aes(colour=d, group=d))

http://kohske.wordpress.com/2010/12/27/faq-geom_line-doesnt-draw-lines/も参照してください

于 2012-05-08T09:25:34.450 に答える
3

美学を追加しgroupます (一種の冗長ですが、軸ラベルを再調整するよりもはるかに簡単です)。

df_nok <- rbind(data.frame(x=c("four","three","two","one"),y=rnorm(4),d="d1"),data.frame(x=c("three","two","one"),y=rnorm(3),d="d2"))

ggplot(df_nok, aes(x,y, group=d)) + geom_line(aes(colour=d))

あなたの x 軸はおそらくあなたが望む順序になっていないのは事実です。@csgillespie で指摘されているように、これを要因にすることでこれを修正できます

df_nok$x <- factor(df_nok$x, 
            levels=c("one", "two", "three", "four"), 
            labels=1:4)
于 2013-08-13T04:59:22.787 に答える