を使用しても機能しないため、プロットされるポイントの順序を制御したい高密度の散布図があります。alpha
基本的に、「上に」プロットしたい少数のポイントがあります。このggplot2のポイントの「zオーダー」を制御する唯一の方法は、レイヤーを使用することです。私は次のものを持っています:
df <- data.frame(x=rnorm(10000),y=rnorm(10000))
df$g <- c("1")
df[500,]$g <- c("special")
df[600,]$g <- c("special2")
ggplot(df) + geom_point(aes(x=x, y=y, colour=g))
これにより、列の値の適切な凡例が表示されg
ます。ここで、値が「special」、「special2」のポイントがたまたま残りのポイントの上にプロットされますが、多くの場合、これは正しくありません。その場合、データフレームをレイヤーに分割して、各レイヤーを 1 つずつプロットしようとしましたポイントの順序を確実に取得するための1つ:
df1 <- df[df$g == "special",]
df2 <- df[df$g == "special2",]
df3 <- df[df$g == "1",]
# plot layer by layer
p <- ggplot() + geom_point(aes_string(x=x,y=y), data=df1, color="red")
p <- p + geom_point(aes_string(x=x, y=y), data=df2, color="green")
p <- p + geom_point(aes_string(x=x, y=y), data=df3, color="blue")
これは機能しますが、 df が だけでプロットされる最初のケースとは異なり、凡例は表示されませんcolour=g
。凡例を表示するにはどうすればよいですか?
また、これを行う簡単な方法はありますか?元の呼び出しは、レイヤーの問題を除いて完璧です. たとえば、ggplotに順序を伝える方法はありませんか
ggplot(df) + geom_point(aes(x=x, y=y, colour=g), order=c("1", "special", "special2"))
最初にvalueを持つすべてのポイントをプロットし、次にg
valueを持つすべてのポイントなどをプロットする必要があることを示すために、データフレームを別々のものに分割し、レイヤーを使用してから凡例を手動で指定することは、プロットされるポイントの順序を制御するためだけに非常に面倒です. 簡単な最初の呼び出しで、ggplot は色も処理してくれます。これは非常に便利です。ありがとう。1
g
special
psこれらのプロットを作成するためにrpy2を使用していますが、変換は(通常)rpy2に簡単なのでRを示しましたが、rpy2ソリューションはさらに優れています。