met*_*oia 5 visualization r ggplot2
我用可视化的面板数据集geom_point,其中y = var1,x = year和color = var2.问题是有许多重叠点,即使是水平抖动也是如此.
减小点大小或设置低α值是不合需要的,因为两者都降低了第二变量的视觉影响,第二变量具有非常长的右偏斜.我希望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"))
Run Code Online (Sandbox Code Playgroud)
如何将具有最高值的点df$price放在重叠的点堆栈顶部?
看起来网格按照数据的顺序绘制,
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)))
Run Code Online (Sandbox Code Playgroud)
所以我建议你先重新排序你的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
Run Code Online (Sandbox Code Playgroud)