给定如下设置:
require(ggplot2)
require(ggpubr)
size = 20
s = 0.2
d = seq(0,2*pi, length.out=size)
df = data.frame(
d=d + runif(size)*s,
a=sin(d) + runif(size)*s,
b=sin(d-10) + runif(size)*s,
c=cos(2*d) + runif(size)*s
)当尝试使用ggarrange绘制线条时
ggarrange(
(
ggplot(df, aes(x=d, palette="Set1"))
+ geom_smooth(aes(y=a, color="A"), se=FALSE)
+ scale_color_manual(values=c("#999999"))
),
(
ggplot(df, aes(x=d, palette="Set2"))
+ geom_smooth(aes(y=b, color="B"), se=FALSE)
+ geom_smooth(aes(y=c, color="C"), se=FALSE)
),
common.legend=TRUE
)公共图例仅显示第一个ggplot参数中的项,在本例中为A行。如何在不重新格式化数据框并使用facet的情况下获得包含所有行的通用图例

发布于 2019-06-14 04:56:50
您可以通过在第一个图中的scale_color_manual()中定义limits,并为每个值设置一个值来实现这一点。
例如,您可以添加
scale_color_manual(limits = c("A", "B", "C"),
values = c("#999999",hcl(c(15, 195), 100, 65)))到您的示例的第一个图。
ggarrange(
(
ggplot(df, aes(x=d, palette="Set1"))
+ geom_smooth(aes(y=a, color="A"), se=FALSE)
+ scale_color_manual(limits = c("A", "B", "C"),
values = c("#999999",hcl(c(15, 195), 100, 65)))
),
(
ggplot(df, aes(x=d, palette="Set2"))
+ geom_smooth(aes(y=b, color="B"), se=FALSE)
+ geom_smooth(aes(y=c, color="C"), se=FALSE)
),
common.legend=TRUE
)

https://stackoverflow.com/questions/56587458
复制相似问题