我想从一个简单的数据集中绘制一个矩形内有大点的图。我可能希望在不同的方面显示多个结果。问题在于,矩形的大小(使用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的点和矩形的相对大小相同,而与图中的构面数量无关。
ggforce使这变得相当简单,半径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)
| 归档时间: |
|
| 查看次数: |
735 次 |
| 最近记录: |