gpt4 book ai didi

r - ggplot2:两个映射有一个图例

转载 作者:行者123 更新时间:2023-12-04 12:04:34 26 4
gpt4 key购买 nike

我正在使用两种不同的映射进行绘图(“组”映射到颜色和线型,“到”映射到形状)。我想将这两个映射组合在一个图例中,但无法在图例中获得正确的形状。
这是我的尝试:

set.seed(123)
plotdata = cbind.data.frame(x = rep(1:5, times = 4),
y = rnorm(20),
from = rep(c("1","2"), each = 10),
to = rep(c("1","2"), times= 10))
plotdata = cbind.data.frame(plotdata, group = paste0(plotdata$from, "to", plotdata$to))

library(ggplot2)

plot1 = ggplot(plotdata, aes(x = x, y = y, group = group, color = group, lty = group, shape = to)) +
geom_point() + geom_line() + theme_bw() +
scale_color_discrete(name = "",
breaks = c("1to1", "1to2", "2to1", "2to2"),
labels = c("1to1", "1to2", "2to1", "2to2")) +
scale_linetype_discrete(name = "",
breaks = c("1to1", "1to2", "2to1", "2to2"),
labels = c("1to1", "1to2", "2to1", "2to2")) +
scale_shape_manual(name = "",
values = c(1, 2, 1, 2),
breaks = c("1to1", "1to2", "2to1", "2to2"),
labels = c("1to1", "1to2", "2to1", "2to2"))
print(plot1)

plot

正如您在图中看到的那样,我有一个图例,但形状始终是圆形。
期望的行为:传说中的形状在圆形和金字塔之间交替,就像在情节中一样。

到目前为止,我尝试的是手动指定形状,但这并没有帮助,正如您在上面看到的那样。我还查看了我的绘图对象,希望能够操纵它,但无济于事。

最佳答案

您可以在没有 override.aes 的情况下获得单个图例。只需设置 shape=group,然后使用 scale_shape_manual 设置重复的形状值。在这种情况下,您不需要将 to 映射到任何东西,因为它包含的信息是多余的:

ggplot(plotdata, aes(x = x, y = y, group = group, color = group, lty = group, 
shape = group)) +
geom_point() + geom_line() + theme_bw() +
scale_color_discrete(name = "") +
scale_linetype_discrete(name = "") +
scale_shape_manual(name = "", values=c(1,2,1,2))

enter image description here

关于r - ggplot2:两个映射有一个图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com