0

このデータがあります (最初の 20 行のサンプル):

  • コーディング変数値
  • 1 Z1 週.0 0
  • 2 Z2 週.0 0
  • 3 Z3 週.0 0
  • 4 Z4 週.0 0
  • 5 Z5 週.0 0
  • 6 Z6 週.0 0
  • 7 Z7 週.0 0
  • 8 Z8 週.0 0
  • 9 Z9 週.0 0
  • 10 Z101 Week.0 NA
  • 11 Z102 Week.0 NA
  • 12 Z1 Week.1 0
  • 13 Z2 Week.1 0
  • 14 Z3 Week.1 0
  • 15 Z4 Week.1 0
  • 16 Z5 Week.1 0
  • 17 Z6 Week.1 0
  • 18 Z7 Week.1 0
  • 19 Z8 Week.1 0

そして、次を使用してプロットします:

pZ <- ggplot(zmeltdata,aes(x=variable,y=value,color=Codering,group=Codering)) + 
  geom_line()+
  geom_point()+
  theme_few()+
  theme(legend.position="right")+
  scale_color_hue(name = "Treatment group:")+
  scale_y_continuous(labels = percent)+
  ylab("Germination percentage")+
  xlab("Week number")+
  labs(title = "Z. monophyllum germination data")
pZ

グラフは問題なく表示されます。

ここに画像の説明を入力

しかし、これを Plot.ly にエクスポートしようとすると、次のエラーが発生します。

> py <- plotly()
> response<-py$ggplotly(pZ)
Error in if (all(xcomp) && all(ycomp)) { : 
  missing value where TRUE/FALSE needed
In addition: Warning message:
In trace.list[[lind[1]]]$y == trace.list[[lind[2]]]$y :
  longer object length is not a multiple of shorter object length

そして、私はこれらのエラーを検索しましたが、その説明は私を完全に混乱させます. 「TRUE/FALSE が必要な場所に欠落している値。」プロセスで論理用語をIF/ELSE/TRUE/FALSEなどとして使用すると発生するはずですが、私はまったく知りません! グラフの値に NA があるかどうかを確認する場合でも、次のようになります。

> is.na(pZ)
       data      layers      scales     mapping       theme coordinates       facet    plot_env      labels 
      FALSE       FALSE       FALSE       FALSE       FALSE       FALSE       FALSE       FALSE       FALSE 

「長いオブジェクトの長さは短いオブジェクトの長さの倍数ではありません」は、長さが異なるオブジェクトがある場合にポップアップするはずですが、まったく同じ長さの3行の1つのオブジェクトのみを使用しています..の値グラフはNULL、それらの行を要求すると表示されますが、それは起こるはずです..

> nrow(zmeltdata)
[1] 143
> nrow(test)
NULL

全体として、私は非常に混乱しており、これらのエラーを正しく処理する方法がわかりません。誰か詳しく説明してもらえますか?

御時間ありがとうございます。

編集: 1:100 のランダム サンプルを使用して別のグラフを Plot.ly にエクスポートしようとしましたが、うまくいきました。エラーがデータにあると確信しています。修正方法がわかりません。それ。

EDIT2: @Gregor への応答:

> dput(head(zmeltdata, 20))
structure(list(Codering = structure(c(16L, 19L, 20L, 21L, 22L, 
23L, 24L, 25L, 26L, 17L, 18L, 16L, 19L, 20L, 21L, 22L, 23L, 24L, 
25L, 26L), .Label = c("B1", "C2", "C3", "C8", "M1", "M101", "M102", 
"M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9", "Z1", "Z101", 
"Z102", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9"), class = "factor"), 
    variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("Week.0", 
    "Week.1", "Week.2", "Week.3", "Week.4", "Week.5", "Week.6", 
    "Week.7", "Week.8", "Week.9", "Week.10", "Week.11", "Week.12"
    ), class = "factor"), value = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 
    NA, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0)), .Names = c("Codering", 
"variable", "value"), row.names = c(NA, 20L), class = "data.frame")

そして尾​​:

> dput(tail(zmeltdata, 43))
structure(list(Codering = structure(c(19L, 20L, 21L, 22L, 23L, 
24L, 25L, 26L, 17L, 18L, 16L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 
26L, 17L, 18L, 16L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 17L, 
18L, 16L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 17L, 18L), .Label = c("B1", 
"C2", "C3", "C8", "M1", "M101", "M102", "M2", "M3", "M4", "M5", 
"M6", "M7", "M8", "M9", "Z1", "Z101", "Z102", "Z2", "Z3", "Z4", 
"Z5", "Z6", "Z7", "Z8", "Z9"), class = "factor"), variable = structure(c(10L, 
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 
11L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 
12L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 
13L, 13L, 13L), .Label = c("Week.0", "Week.1", "Week.2", "Week.3", 
"Week.4", "Week.5", "Week.6", "Week.7", "Week.8", "Week.9", "Week.10", 
"Week.11", "Week.12"), class = "factor"), value = c(0.1, 0.06, 
0.05, 0.09, 0.04, 0.08, 0.05, 0.08, 0, 0, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("Codering", 
"variable", "value"), row.names = 101:143, class = "data.frame")

データセットにはかなりの数の NA がありますが、以前に同様の (より大きな) データセットを使用したことがあるので、問題になることはありません。

また、必要に応じて使用できる .csv ファイルもあります: https://www.mediafire.com/?jij1vlp14a29ntt

4

1 に答える 1

2

問題はNAの処理に関するものです...次のコードを実行してhttps://plot.ly/~marianne2/417/z-monophyllum-germination-data/を取得しました:

pZ <- ggplot(na.omit(zmeltdata), aes(x=variable, y=value, color=Codering,
                                 group=Codering)) +
  geom_line() +
  geom_point() +
  # theme_few() +
  theme(legend.position="right") +
  scale_color_hue(name="Treatment group:") +
  # scale_y_continuous(labels = percent) +
  ylab("Germination percentage") +
  xlab("Week number") +
  labs(title="Z. monophyllum germination data")

py$ggplotly(pZ, kwargs=list(fileopt="overwrite", filename="test_zdata"))

「ggplot2」のみをロードすると、次のエラーが発生するため、theme_few()コメントアウトする必要があることに注意してください。scale_y_continuous(labels = percent)

Error: could not find function "theme_few"

Error in structure(list(call = match.call(), aesthetics = aesthetics,  : 
object 'percent' not found

それぞれ。これらは依存関係の問題だと思います(おそらく「ggthemes」のバージョンを使用していますか?)。

魔法の種類はわかりませんが、 onをtheme_few()使用しない場合、プロットは次のようになります。 na.omit()zmeltdatapZここに画像の説明を入力

ええと、「Week.10」は「Week.9」の後ではなく「Week.1」の後に来ます...とにかく、これを陰謀に送りたくないでしょう! したがって、ggplot の例を正確に再現することはできません。しかし、本当にこれらの NA を保持したいのだろうか (CSV 自体は "NA" と表示されますが、空白の "セル" を期待していました)。とにかくこれらを前処理したくないですか?

na.omit()on を使用しないと、次の警告メッセージが表示されることに注意してくださいzmeltdata

Warning messages:
1: Removed 20 rows containing missing values (geom_path).
2: Removed 47 rows containing missing values (geom_point).

繰り返しますが、純粋な表示/プロットの考慮事項を超えて、これは科学データのように見えるため、実際の数字で週を数えたり、文字列が本当に必要な場合は数字を埋めたりしたくないですか? ("Week.01"、"Week.02" など) そして、欠落しているデータはすべて後続しているように見えます... 10 週以上のデータは (まだ) ありませんよね?

ご報告ありがとうございます。

マリアンヌ

于 2015-01-09T16:50:26.780 に答える