2017-12-04 5 views
3

ggplot2を使用してメタ分析用のフォレストプロットを作成しています。 Here is what an earlier version/incomplete graph looked like.ggplot geom_errorbarhエラー(連続して入力されたとき離散したいが、離散として入力すると連続したい)

私の問題は、もう少し作業をするつもりです。エラーバーはgeom_errorbarhで取得できます。

データ

:私の人生のために Here is a data file from dput on my dropbox.は、私はそれは問題がなくても、Rにコピーアンドペーストような方法で、ここに直接貼り付ける取得する方法を見つけ出すことはできません。とにかく、そのファイル(q.df)を保存して df.forest <- dget("your-path/q.df")を実行すると、使用可能なdfが得られます。 (注:これは、私が作業している完全なdfから、この特定のプロットに必要な変数のみを含むように解析されていますが、何かが意味をなさない場合は、私に知らせてください。

これで、エラーバーを除いて、これがうまく動作し、必要なグラフが作成されます。

ggplot(df.forest, aes(y=ID, x=g, shape = iv.domain, size = plot.weight))+ 
geom_point(aes(size = iv.domain))+ 
scale_shape_manual(name = "IV Domain", 
       values = c(15, 16, 17, 5), 
       labels = c("Abstraction", "Social", "Temporal", 
"Summary\neffects"))+ 
ylab("Refrence")+ 
scale_x_continuous(limits=c(-1.5,2.5), name='Effect size (g)')+ 
geom_vline(xintercept=0, color='dark grey', linetype='dotted')+ 
facet_grid(dv.level~., scales= 'free', space='free')+ 
theme_bw()+ 
theme(panel.grid.major=element_blank(), 
    panel.grid.minor=element_blank(), 
    panel.border=element_blank(), 
    axis.line=element_line(), 
    text=element_text(family='Times'), 
    plot.caption=element_text(hjust = 0, vjust = -7), 
    plot.margin = unit(c(.25,.25,.75,.25), "cm"))+ 
guides(size = FALSE) + 
scale_size_discrete(range = c(1.5,4.5)) 

しかし、私は追加した場合:
Error: Continuous value supplied to discrete scale+ geom_errorbarh(aes(xmin=gLL, xmax=gUL),height=.3)を、(gLLgULが上限/下限値の95%CIを表す数値値である)、それは私にエラーを与えます。私はgLLgULの因数分解のバージョンと入力すると

しかし、:
Error: Discrete value supplied to continuous scale+ geom_errorbarh(aes(xmin=gLL.f, xmax=gUL.f),height=.3)を、それは私に反対のエラーを与えます。

私は高値と低値を検索しましたが、誰かが連続して入力すると何かが離散的であると言われている関数に問題があった場所を見つけることはできませんでしたが、離散的に入力します。

さらに、私はそれが昨日働いた理由をまだ知りませんが、今日は動作しません。私はRを再起動した/私の環境をクリアし、このエラーにつながる何もオフになっていないことを確認するために私の全体のスクリプトを一行一行に戻ったが、私は何も見つけることができません。私はgeom_errorbarhaes()ggplot(aes())に追加しようとしましたが、それでも何も変わりません。また、geom_errorbarhを使わずにこれらの行を実行すると、正確なグラフからエラーバーを差し引いたものになるので、その行に間違いはありません。

ご協力いただければ幸いです。

乾杯!

編集: @ eipi10のおかげでわかりました。私はaes()の変数が何であったのかを見落としていました(それはgeom_errorbarh行に追加するまでうまくいってから考えていませんでした)。それはなぜ私が意味を成していなかったscale_size_discreteを使用させていたのかを説明しますが、うまくいきました。とにかく、geom_point()aes()を削除し、scale_size_discretescale_sizeに変更すると、それは機能しました。ありがとうございました! -AE

+0

再現可能な例を作成する方法については、[この回答の](https://stackoverflow.com/a/5963610/2461552)をコピーして貼り付けることで、少量のデータを共有する方法があります。 – aosmith

+0

唯一の層として 'geom_errorbarh'を使用しているプロットで同じエラーが発生しますか?問題に無関係なプロットコードをすべて削除すると、どこがうまくいかないのかを理解するのに役立ちます。 – aosmith

答えて

1

これは、メインのggplotコールにsize = plot.weightとの2つのサイズマッピングがあるために発生しています。geom_pointです。第1は連続的であり、第2は離散的である。どちらか一方を指定することはできますが、両方を指定することはできません。scale_size_***呼び出しは、サイズにマップする変数のタイプ(連続または離散)に一致する必要があります。

関連する問題