2

dfこのような10列のデータフレームがあります。

row.names   c(300, 400, 500, 600, 700)  X1  X2  X3  X4  X5  X6  X7  X8  X9
1   absTLM_3_4  300 -4.147782e-08   -3.360635e-08   -3.306786e-08   -3.133482e-08   -3.124207e-08   -3.056317e-08   -3.020253e-08   -2.950814e-08   -2.955155e-08
2   absTLM_4_5  400 -3.703708e-08   -3.013687e-08   -2.746570e-08   -2.627163e-08   -2.528328e-08   -2.457543e-08   -2.437666e-08   -2.412295e-08   -2.358447e-08
3   absTLM_5_6  500 -3.575756e-08   -2.694028e-08   -2.457341e-08   -2.331162e-08   -2.262283e-08   -2.180886e-08   -2.104917e-08   -2.101946e-08   -2.081650e-08
4   absTLM_6_7  600 -2.454283e-08   -2.152165e-08   -1.967477e-08   -1.885213e-08   -1.835989e-08   -1.814608e-08   -1.806438e-08   -1.785795e-08   -1.784158e-08
5   absTLM_7_8  700 -2.317125e-10   -1.029456e-08   -1.076342e-08   -1.365264e-08   -1.378578e-08   -1.457421e-08   -1.463740e-08   -1.480280e-08   -1.515121e-0

ここで、x 軸に列 1 を、y 軸に列 2、5、6、および 8 をプロットしたいと思います。これを行うために、次のコードを使用します。

x4 <- melt(df, id=names(df)[1], measure=names(df)[c(2, 5, 6, 8)], variable = "cols")
plt <- ggplot(x4) +
        geom_line(aes(x=x,y= value, color=cols), size=1) +
        labs(x = "x", y = "y")

プロット オブジェクトを呼び出すと、plteval (expr, environment, enclos) : object 'x' not found でエラーが発生します
プロットを正しく表示するには、ここで何を変更する必要があるかを誰かが親切に指摘できますか。

ありがとう。

4

2 に答える 2

0

次のコードがデータを正しくプロットしなかった理由はc(300, 400, 500, 600, 700)、データ フレームの最初の列の名前である列ヘッダー名が原因でしたdf

x4 <- melt(df, id=names(df)[1], measure=names(df)[c(2, 5, 6, 8)], variable = "cols")
plt <- ggplot(x4) +
        geom_line(aes(x=x,y= value, color=cols), size=1) +
        labs(x = "x", y = "y")

そのため、df最初に の列ヘッダー名を変更する必要がありました。Brandon Bertelsen の提案によると、 の列ヘッダー名は次のコード行によってc(300, 400, 500, 600, 700)に変更されました。x

colnames(df)[1] <- "x"

列ヘッダー名が変更されると、データ フレームが溶けて、プロットが正しく機能するようになります。

x4 <- melt(df, id=names(df)[1], measure=names(df)[c(2, 5, 6, 8)], variable = "cols")
plt <- ggplot(x4) +
        geom_point(aes(x=x,y= value, color=cols), size=2) +
        labs(x = "x", y = "y")

プロットpltは次のようになります。

ここに画像の説明を入力

于 2014-01-24T13:11:55.250 に答える