Я пытаюсь нарисовать 3 разных рисунка на одной фигуре с легендой в правой части, как на рисунке ниже.Но мне бы хотелось, чтобы иконка моей легенды была просто линиями, а не квадратом со строками.
Однако я делаю полный неэффектный способполучить эту цифру.Я строю графику с помощью ggarrange(p1, p2, p3, ncol=2, nrow=2, common.legend = F, legend="none")
, а затем вставляю легенду в PDF, используя веб-сайт Small Pdf .
Вот код, который я использую для получения графики.
p1=ggplot() +
geom_density(data = df11, aes(x =as.vector(snormal_sim0161[,1])),colour = 'blue',
size = 1.1,show.legend = F) +
geom_density(data = df21, aes(x = as.vector(snormal_sim261[,1])),colour = 'green',
size = 1.1,show.legend = F) +
geom_density(data = df31, aes(x = snormal_sim09[61,]),colour = 'pink',
size = 1.1,show.legend = F) +
stat_function(data = data.frame(x = c(-10, 10)),
aes(x),colour = 'black',fun = skewn, n = 100000,
args = list(xi = 0, omega = 1, alpha= delta.sn), size=1.1) + ylab("") +
coord_cartesian(xlim = c(-3, 3)) +
labs( x = expression(y[r]), y=expression("Densities"))+
theme_bw(base_size = 15)
p2=ggplot() +
geom_density(data = df1, aes(x =as.vector(df11[,1])),colour = 'blue',
size = 1.1,show.legend = F) +
geom_density(data = df2, aes(x =as.vector(df21[,1])),colour = 'green',
size = 1.1,show.legend = F) +
geom_density(data = df3, aes(x = as.vector(df31)),colour = 'pink',
size = 1.1,show.legend = F) +
stat_function(data = data.frame(x = c(-10, 10)), aes(x),colour = 'black',fun = dt, n = 100000,
args = list(df = 2.1), size=1.1) + ylab("") +
coord_cartesian(xlim = c(-4.5, 4.5)) +
labs( x = expression(y[r]), y=expression("Densities"))+
theme_bw(base_size = 15)
p3=ggplot() +
geom_density(data = df13, aes(x = as.vector(df113[,1]),colour = 'PP(0.1)'),
size = 1.1,show.legend = TRUE) +
geom_density(data = df23, aes(x =as.vector(df213[,1]),colour = 'PP(2)'),
size = 1.1,show.legend = TRUE) +
geom_density(data = df33, aes(x = df313,colour = 'PP(10)'),
size = 1.1,show.legend = TRUE) +
stat_function(data = data.frame(x = c(-10, 10)), aes(x,colour = 'Limit distribution'),
fun = skewt, n = 100000,
args = list(xi = 0, omega = 1,nu=2.1, alpha= delta.st), size=1.1) + ylab("") +
coord_cartesian(xlim = c(-4.5, 4.5)) +
scale_colour_manual("",values = c('PP(0.1)'='blue', 'PP(2)'='green', 'PP(10)'='pink','Limit distribution'='black'))+
labs( x = expression(y[r]), y=expression("Densities"))+
theme_bw(base_size = 15)
ggarrange(p1, p2, p3, ncol=2, nrow=2, common.legend = F, legend="none")
Итак, я хотел бы знать, есть ли какой-нибудь способ сделать рисунок выше просто кодированием, и как я могу изменить значки легенды просто на линии.