r ggplot 根据形状不同大小

问题描述 投票:0回答:1

我有以下 R 代码:

x <- rep(c(1:5), 5)
y <- rep(1:5, each=5)
z <- rep(seq(0, 1000, 250), each=5)
w1 <- c(15:18,25)
w2 <- c("\u25A0", "\u25CF", "\u25B2", "\u25C6", "\u25BC")
t <- c(rep(c("a", "s", "d", "f", "g"), 5))
col <- c("red", "blue", "green", "black", "yellow")

data <- cbind.data.frame(x,y,z,t)

ggplot(data) +
  geom_point(aes(x=x, y=y, shape=t, size=z, color=as.factor(z))) +
  scale_shape_manual(values=w1) +
  scale_size_continuous(limits=c(0, 1000), 
                        breaks=c(0,250,500,1000)) +
  scale_color_manual(values=col, guide="none")

ggplot(data) +
  geom_point(aes(x=x, y=y, shape=t, size=z, color=as.factor(z))) +
  scale_shape_manual(values=w2) +
  scale_size_continuous(limits=c(0, 1000), 
                      breaks=c(0,250,500,1000)) +
  scale_color_manual(values=col, guide="none")

我的问题:在第一张图片中,图中形状的大小和图例上的大小是可比的。在第二张图中,图中形状的大小与图例上的大小不对应;它们太小了。为什么会这样呢?我最终想要的是拥有第一个图,但填充了向下的三角形,或者在图例上具有正确尺寸的第二个图。我怎样才能得到这个?

r ggplot2 legend shapes
1个回答
0
投票

您可以使用比例指南中的

override.aes
更改形状图例中形状的大小。在这里,我们将其更改为
size = 6

ggplot(data, aes(x, y)) +
  geom_point(aes(shape = t, size = z, color = as.factor(z))) +
  scale_shape_manual(values = w2, 
                     guide = guide_legend(override.aes = list(size = 6))) +
  scale_size_continuous(limits = c(0, 1000), 
                        breaks = c(0, 250, 500, 1000)) +
  scale_color_manual(values = col, guide = "none")

© www.soinside.com 2019 - 2024. All rights reserved.