ggplot2以轴为单位指定点大小

use*_*127 6 r ggplot2

我想从一个简单的数据集中绘制一个矩形内有大点的图。我可能希望在不同的方面显示多个结果。问题在于,矩形的大小(使用geom_rect)以轴为单位定义,而的size参数为geom_point其他单位。因此,矩形的点的相对大小根据构面的数量而变化:

data<-data.frame(y=1:3,
                 facet=factor(1:3),
                 x=rep(1,3))

testplot<-function(data){
  p<-ggplot(data,aes(x=x,y=y,color=y))
  p<-p+facet_grid(.~facet)
  p<-p+scale_x_continuous(limits=c(0.5,1.5))
  p<-p+scale_y_continuous(limits=c(0.5,3.5))
  p<-p+geom_rect(xmin=0.85,xmax=1.15,ymin=0.74,ymax=3.25)
  p<-p+geom_point(size=50)
  return(p)
}

p1<-testplot(subset(data,facet=="1"))
p2<-testplot(data)
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以按轴单位缩放绝对点的大小,以便p1和p2的点和矩形的相对大小相同,而与图中的构面数量无关。

Tje*_*ebo 2

使这变得相当简单,半径r相对于坐标刻度进行缩放(因此如果您想要圆形,则使用它很重要coord_fixed())。

例子

library(ggplot2)
library(ggforce)

##sample data frame
grid_df = data.frame(x = 1:5, y = rep(1,5), r = seq(0.1, 0.5, 0.1), fill = letters[1:5])
Run Code Online (Sandbox Code Playgroud)

带有空圆圈

ggplot() + 
geom_circle(data = grid_df, mapping = aes(x0 = x,  y0 = y, r = r)) + 
coord_fixed()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

带有填充圆圈和“固定”填充(在 之外aes

ggplot() + 
geom_circle(data = grid_df, mapping = aes(x0 = x,  y0 = y, r = r), fill = 'black') + 
coord_fixed()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

带实心圆圈并基于变量填充(内部aes

ggplot() + 
geom_circle(data = grid_df, mapping = aes(x0 = x,  y0 = y, r = r, fill = fill)) + 
coord_fixed()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述