Как построить несколько графиков с более крупной легендой в правой части - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь нарисовать 3 разных рисунка на одной фигуре с легендой в правой части, как на рисунке ниже.Но мне бы хотелось, чтобы иконка моей легенды была просто линиями, а не квадратом со строками.

enter image description here

Однако я делаю полный неэффектный способполучить эту цифру.Я строю графику с помощью 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")

Итак, я хотел бы знать, есть ли какой-нибудь способ сделать рисунок выше просто кодированием, и как я могу изменить значки легенды просто на линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...