2017-07-13 3 views
0

データポイント(X、Y)に割り当てられたラベルと色を抽出したいと思います。私はthis solutionで言及されたアプローチを使用してそれらを抽出しようとしました。ggplot_buildオブジェクトから凡例ラベルを抽出する際にエラーが発生しました

head(dataPlot) 
# Source: local data frame [6 x 3] 
# Groups: EFOValue [2] 
# 
# # A tibble: 6 x 3 
#   X  Y  EFOValue 
#  <dbl> <dbl>   <chr> 
# 1 0.505115 0.348486 adipose tissue 
# 2 0.365520 0.414446 adipose tissue 
# 3 0.365520 0.414446 adipose tissue 
# 4 0.526531 0.341508 adrenal gland 
# 5 0.526531 0.341508 adrenal gland 
# 6 0.412384 0.385316 adrenal gland 


p2 <- ggplot(dataPlot, aes(x=X, y=Y, color=EFOValue)) + geom_point() 
g2 <- ggplot_build(p2) 
data.frame(colours = unique(g2$data[[1]]["colour"]), 
      label = levels(g2$plot$data[, g2$plot$labels$colour]) 

サンプルコードは、サンプルデータセットirisで期待通りに機能しました。 このデータセットの場合、dataPlot、出力プロットは期待どおりです。

しかし、私はが空であることに気付きました。g2オブジェクトでは値の抽出が不可能でした。これの理由と、このggplotのアプローチでのエラーをどのように克服するのかを教えてください。これを行うための他の選択肢があります:それぞれのレベルに色を割り当てることによって、プロットシステムに色を渡すかのどちらかです。

+0

虹彩データセットを使用しているので、例を示すことができますか?あなたのリンクからの回答は期待される結果を示します – user20650

+0

ああ...データをデータフレームに変換するか、 'label = levels(g $ plot $ data [[g $ plot $ labels $ color]])' – user20650

+0

を使ってもデータフレームでは機能しませんでした。 – Prradep

答えて

0

司会者の要求に応じて回答を投稿することで、将来のユーザーがその恩恵を受けることができます。


私はこの問題を発見しました。問題は、着色のために使用される変数EFOValueが因子変数ではないということです。したがって、levels()関数は、空のスロット(または望ましい出力)を生成しません。

関連する問題