(関連性のない)凡例を既存のggplotにどのようにマップできますか?ggplot2:手動で凡例を追加する
免責事項:私を嫌ってはいけません。私は 'ggplot2'を使って伝説を作成する最良の方法があなたのデータを正しくマップすることを知っており、私は99%の時間を費やしています。ここで私は一般的に私が望む伝説を私に与えることができるものを求めています。
例として、私は多少このようになりますプロットがあります。このコードから作成された
:
set.seed(42)
temp1 = cbind.data.frame(begin = rnorm(10, 0, 1), end = rnorm(10, 2, 1), y1 = 1:10, y2 = 1:10, id = as.character(1:10))
temp2 = cbind.data.frame(x = 0:2, y = 1:3*2)
temp3 = cbind.data.frame(x = seq(0.5, 1.5, 0.33))
temp = c()
plot1 = ggplot(data = temp, aes(x = x)) +
geom_vline(data = temp3, aes(xintercept = x), color = "red", linetype = "longdash") +
geom_segment(data = temp1, aes(y = y1, yend = y2, x = begin, xend = end, color = id)) +
geom_point(data = temp2, aes(x = x, y = y), shape = 4, size = 4) +
scale_color_discrete(guide = F)
plot1
と私が含まれている伝説追加したい:
-
を
- "l1"と呼ばれる赤い長辺の垂直線
- "l2"と呼ばれる黒い実線の水平線
- 「L3」
と呼ばれる緑いっぱいのブロック、理想的に私はややこの(先に擬似コード)のようなものを生成する:これにアプローチする方法
plot2 = plot1 + guide(elements = list(list(type = "line", color = "red", linetype = "longdash", direction = "vertical", label = "l1"), list(type = "line", label = "l2"), list(type = "rect", fill = "green", label = "l3"))
私の最高の推測を作成することですいくつかの補助的な擬似データtemp
はプロットされているか、またはプロット上で見えない場所にマッピングされていて、凡例を作成するために使用されていましたが、私はこのようなことで凡例をプロットするのに成功しませんでした。
もう一度、既存のプロットに関連のない凡例を追加するにはどうすればいいですか?つまり、元のデータをプロット変数に巧妙にマッピングしないでください。
は手動 'geom_text'と' geom_line'を使って何かを構築することができます。 –
または、手動で 'grid'とgrobsで何かを追加してください。または、ggplot2に拡張機能を書き込んでみてください。私は、同様の質問がたくさん出てくるので、誰かが最終的に後者をやることを想像します。 –
あなたは「不正行為」して、実際にプロットに表示されない塗りつぶしを追加してから、塗りつぶしラベルが好きなように編集することができます。 – user5029763