5

、、、および。を使用してパネルデータセットを視覚化していgeom_pointます。問題は、水平ジッターがあっても、多くの重複点があることです。y = var1x = yearcolor = var2

ポイントサイズを小さくするか、低いアルファ値を設定することは、どちらも非常に長い右スキューを持つ2番目の変数の視覚的な影響を減らすため、望ましくありません。ggplotで、の値が最も高いポイントをvar2他のすべてのオーバーラップするポイントの上に配置したいと思います。

再現可能な例:

df <- data.frame(diamonds)

ggplot(data = df,aes(x=factor(cut),y=carat,colour=price)) + 
  geom_point(position=position_jitter(width=.4))+
  scale_colour_gradientn(colours=c("grey20","orange","orange3"))

df$price重なり合うポイントのスタックの上に、最も高い値を持つポイントをどのように配置しますか?

4

2 に答える 2

6

グリッドがデータの順序でプロットされているように見えますが、

library(grid)

d <- data.frame(x=c(0.5,0.52),y=c(0.6,0.6), fill=c("blue","red"),
                stringsAsFactors=FALSE)

grid.newpage()
with(d,grid.points(x,y,def='npc', pch=21,gp=gpar(cex=5, fill=fill)))
with(d[c(2,1),], grid.points(x,y-0.2,def='npc', pch=21,
                             gp=gpar(cex=5, fill=fill)))

したがって、最初にdata.frameを並べ替えて、ggplot2が混乱しないように祈ることをお勧めします:)

library(ggplot2)
library(plyr)
df <- diamonds[order(diamonds$price, decreasing=TRUE), ]
# alternative with plyr
df <- arrange(diamonds, desc(price))
last_plot() %+% df
于 2012-08-04T02:36:49.543 に答える
2

ggplot2では、順序の美学を使用して、ポイントがプロットされる順序を指定できます。最後にプロットされたものが上に表示されます。これを適用するには、ポイントを描画する順序を保持する変数を作成します。あなたの場合、あなたはを指定することができるかもしれませんrank(var2)

再現可能な例では、最も高いポイントを一番df$price上に配置するには、次のようにします。

df <- data.frame(diamonds)
df$orderrank <- rank(df$price,ties.method="first")

ggplot(data = df,aes(x=factor(cut),y=carat,colour=price, order=orderrank)) + 
  geom_point(position=position_jitter(width=.4))+
  scale_colour_gradientn(colours=c("grey20","orange","orange3"))

質問の例と、価格でプロット順序が指定されたグラフの出力の違いは次のとおりです。

順序付けられていないプロットと順序付けられたプロットの比較

(ジッターにより比較が少しわかりにくくなりますが、違いはまだあります。)

于 2015-03-29T03:20:52.333 に答える