2つのdata.frameからデータをプロットする際の伝説の問題

StackOverflow https://stackoverflow.com/questions/1787578

  •  21-09-2019
  •  | 
  •  

質問

ggplot2を必要に応じて動作させることに少し困っています。基本的に、実際の観測と、それらを1つのプロットに入れて近似したことを比較したいと思います。例えば、

> library(ggplot2)
> df.actual <- data.frame(x = 1:100, y = (1:100) * 2)
> df.approx <- data.frame(x = 1:150, y = (1:150) * 2 + 5  + rnorm(150, mean = 3) )
> ggplot() + geom_point(aes(x, y), data = df.actual) + geom_line(aes(x,y), data = df.approx)

私の問題は、伝説を表示できないということです。 Ggplot2の凡例はあまり柔軟ではないことをどこかで読みました(?)。理想的には、伝説

  • title = 'type'
  • キー:黒い塗りつぶしポイントと黒い線
  • キーラベル:「実際」、「おおよそ」
  • legend.position = 'topright'

ありがとう。

役に立ちましたか?

解決

これを試してみてください

ggplot() + 
  geom_point(aes(x, y, colour = "actual"), data = df.actual) + 
  geom_line(aes(x, y, colour = "approximate"), data = df.approx) + 
  scale_colour_discrete("Type")

他のヒント

これは、グリッドオブジェクトの操作によって凡例を変更するためのある種のハックです。

library("ggplot2")
df.actual <- data.frame(x=1:100, y=(1:100)*2)
df.approx <- data.frame(x=1:150, y=(1:150)*2 + 5 + rnorm(150, mean=3))
p <- ggplot() +
     geom_point(aes(x, y, colour="Actual"), data=df.actual) +
     geom_line(aes(x, y, colour="Approximate"), data=df.approx) +
     scale_colour_manual(name="Type",
                         values=c("Actual"="black", "Approximate"="black"))
library("grid")
grob <- ggplotGrob(p)
tmp <- grid.ls(getGrob(grob, "key.segments", grep=TRUE, global=TRUE))$name
grob <- removeGrob(grob, tmp[1])  # remove first line segment in legend key
tmp <- grid.ls(getGrob(grob, "key.points", grep=TRUE, global=TRUE))$name
grob <- removeGrob(grob, tmp[2])  # remove second point in legend key
grid.draw(grob)

ggplot2出力http://img134.imageshack.us/img134/8427/ggplotlegend.png

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top