Уменьшите количество переменных в легенде ggplot - PullRequest
0 голосов
/ 04 августа 2020

У меня есть следующий фрейм данных в R:

       eta      x.1   x.2 x.3     y.1     y.2   y.3    xz.1    xz.2  xz.3
eta.0    1 28.00000 28.00000 28.00000 -1.0000000 -1.0000000 -1.0000000 -1.0000000 -1.0000000 -1.0000000
eta.01   2 27.99999 27.99999 27.99995 -0.9999824 -0.9999824 -0.9999555 -0.9999999 -0.9999999 -0.9999988
eta.1    3 27.98915 28.00041 27.99914 -0.9948991 -0.9996051 -0.9987214 -0.9996547 -1.0000389 -1.0000022
eta.5    4 25.57216 27.98243 27.98737  0.0000000 -0.9922089 -0.9954901 -0.8380154 -0.9995550 -0.9996936
eta.10   5 25.38172 25.94990 28.04486  0.0000000  0.0000000 -1.0172488 -0.8670870 -0.9492688 -1.0004286

Я использовал gather для создания нового фрейма данных и хочу построить график каждой переменной. Сейчас я пытаюсь построить график всех переменных, однако я хочу построить их вместе, соответствующие второму числу. Итак, я хочу построить вместе x.1, y.1 и xz.1 и создать легенду, которая имеет только три переменные, скажем Model 1, Model 2, Model 3 в ggplot.

library(tidyverse)
# Gather dataframe
df.gather <- gather(df, "variables", "value", 2:ncol(df))

shapes <- rep(c(15,16,17),3)
colours <- c("#c97a76","#5abd47","#3160e1")
names <- c("Model 1", "Model 2", "Model 3")

ggplot <- ggplot(df.gather, aes(x = eta, y = value, col=variables, group = variables, shape = variables))+
  geom_point()+
  geom_line(show.legend = F)+
  expand_limits(y=30)+
  scale_shape_manual(values = shapes, guide = F)+
  ylab("Point Estimate")+
  theme(axis.line = element_line(colour = "black"),
      axis.ticks.length = unit(.25,"cm"),
      panel.grid.major = element_blank(),
      panel.grid.minor = element_blank(),
      panel.border = element_blank(),
      panel.background = element_blank(),
      legend.key = element_blank(),
      legend.box.background = element_rect(color="black", size=0.5))+
  scale_color_manual(values =  c(rep(colours,3)), guide = F)

В настоящее время у меня есть график ниже, но я пытался выяснить, можно ли объединить каждую модель в 1 и иметь только «Модель 1», «Модель 2» и «Модель 3» в легенде, соответствующей форме и цвет.

Заранее спасибо.

текст

1 Ответ

2 голосов
/ 04 августа 2020

Вот как бы я это сделал: создайте новую переменную, дающую Model, затем используйте ее для формы и цвета:

df.gather$Model <- gsub("[a-z.]+", "", df.gather$variables)
ggplot(data = df.gather, mapping = aes(x = eta, y = value, group = variables,
                                       color = Model, shape = Model)) +
    geom_point() +
    geom_line() +
    expand_limits(y=30) +
    ylab("Point Estimate")

введите описание изображения здесь

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