Оберните фасет и заполните точечный график - PullRequest
1 голос
/ 03 мая 2019

Уважаемые, доброе утро

1) Я пытаюсь подготовить 25 коробок представителей для 25 видов.На оси абсцисс я хочу представить репрезентативные значения каждой анестезии для этого конкретного вида.По оси Y я хочу построить 3 разных периода времени (до, во время, после), которые разделят мой график по горизонтали.Что касается анестезии, внутри каждой коробки должны быть нанесены точки, представляющие каждую из них (как я написал в моих сценариях) или даже название каждой анестезии (aa, bb, cc, dd и т. Д.) (Как я указал на своем рисунке).

2) Я сделал пример в фотошопе, чтобы представить, что я хочу.В этом примере я не описал все приемы и выполнил только симуляцию (они не построены в соответствии с их конкретным значением).

3) Я могу построить график, когда рассматриваю один вид за разоднако, когда я пытаюсь построить все виды, чтобы получить фигуру, подобную имитирующей фигуре (используя команду facet_wrap), появляется следующее сообщение об ошибке:

Ошибка: хотя бы один слой должен содержать все переменные фасетирования: sp.* Сюжет отсутствует sp * Слой 1 отсутствует sp

4) Я написал следующие 2 кода, но они не сработали.Может ли кто-нибудь помочь мне улучшить эти сценарии?Если мой вопрос не был ясен, я могу объяснить лучше или поставить другую цифру, чтобы имитировать то, что я хочу.

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

library(ggthemes)
library(ggplot2)
  dados %>% 
  filter(anesthesia %in% c(aa, bb, cc, dd)) %>%
  dados$time <- factor(dados$time, levels=c("pre", "during", "post")) +
  ggplot(aes(x=value,y=time, fill=factor(anesthesia))) +
  geom_point() +  
  ggthemes::theme_few() +
  facet_wrap(~ specie)
library(ggthemes)
library(ggplot2)
dados$time <- factor(dados$time, levels=c("pre", "during", "post"))
ggplot(data, aes(value, time, fill = anesthesia)) +
geom_point() +
  ggthemes::theme_few() +
  facet_wrap(~ specie)
Error: At least one layer must contain all faceting variables: `sp`.
* Plot is missing `sp`
* Layer 1 is missing `sp`
specie  time    anesthesia  value
sp1 pre aa  0
sp1 pre bb  32.36245955
sp1 pre cc  67.96116505
sp1 pre dd  0
sp1 during  aa  43.71584699
sp1 during  bb  18.21493625
sp1 during  cc  38.25136612
sp1 during  dd  0
sp1 post    aa  0
sp1 post    bb  0
sp1 post    cc  46.15384615
sp1 post    dd  53.84615385
sp2 pre aa  0
sp2 pre bb  83.78378378
sp2 pre cc  1.621621622
sp2 pre dd  14.59459459
sp2 during  aa  48.40909091
sp2 during  bb  35.22727273
sp2 during  cc  15.68181818
sp2 during  dd  15.68181818
sp2 post    aa  0
sp2 post    bb  48.38709677
sp2 post    cc  0
sp2 post    dd  51.61290323
sp3 pre aa  0
sp3 pre bb  80.64516129
sp3 pre cc  9.677419355
sp3 pre dd  9.677419355
sp3 during  aa  47.2972973
sp3 during  bb  33.78378378
sp3 during  cc  14.86486486
sp3 during  dd  14.86486486
sp3 post    aa  0
sp3 post    bb  50.84745763
sp3 post    cc  0
sp3 post    dd  49.15254237
sp4 pre aa  0
sp4 pre bb  54.34782609
sp4 pre cc  45.65217391
sp4 pre dd  0
sp4 during  aa  16.36363636
sp4 during  bb  45.45454545
sp4 during  cc  0
sp4 during  dd  0
sp4 post    aa  0
sp4 post    bb  19.56521739
sp4 post    cc  51.08695652
sp4 post    dd  29.34782609
sp5 pre aa  0
sp5 pre bb  76.92307692
sp5 pre cc  0
sp5 pre dd  23.07692308
sp5 during  aa  24.08759124
sp5 during  bb  36.49635036
sp5 during  cc  39.41605839
sp5 during  dd  39.41605839
sp5 post    aa  0
sp5 post    bb  62.5
sp5 post    cc  0
sp5 post    dd  37.5
sp6 pre aa  0
sp6 pre bb  90.90909091
sp6 pre cc  9.090909091
sp6 pre dd  0
sp6 during  aa  42.10526316
sp6 during  bb  52.63157895
sp6 during  cc  0
sp6 during  dd  0
sp6 post    aa  0
sp6 post    bb  0
sp6 post    cc  0
sp6 post    dd  100
sp7 pre aa  0
sp7 pre bb  0
sp7 pre cc  100
sp7 pre dd  0
sp7 during  aa  8.333333333
sp7 during  bb  0
sp7 during  cc  0
sp7 during  dd  0
sp7 post    aa  0
sp7 post    bb  0
sp7 post    cc  51.35135135
sp7 post    dd  48.64864865
sp8 pre aa  0
sp8 pre bb  87.62886598
sp8 pre cc  12.37113402
sp8 pre dd  0
sp8 during  aa  37.01298701
sp8 during  bb  55.19480519
sp8 during  cc  0
sp8 during  dd  0
sp8 post    aa  0
sp8 post    bb  0
sp8 post    cc  100
sp8 post    dd  0
sp9 pre aa  0
sp9 pre bb  0
sp9 pre cc  100
sp9 pre dd  0
sp9 during  aa  13.33333333
sp9 during  bb  0
sp9 during  cc  0
sp9 during  dd  0
sp9 post    aa  0
sp9 post    bb  44.44444444
sp9 post    cc  0
sp9 post    dd  55.55555556
sp10    pre aa  0
sp10    pre bb  40
sp10    pre cc  60
sp10    pre dd  0
sp10    during  aa  33.20610687
sp10    during  bb  26.71755725
sp10    during  cc  0
sp10    during  dd  0
sp10    post    aa  0
sp10    post    bb  11.23595506
sp10    post    cc  71.91011236
sp10    post    dd  16.85393258
sp11    pre aa  0
sp11    pre bb  97.08737864
sp11    pre cc  0
sp11    pre dd  2.912621359
sp11    during  aa  72.03166227
sp11    during  bb  26.38522427
sp11    during  cc  1.583113456
sp11    during  dd  1.583113456
sp11    post    aa  50
sp11    post    bb  50
sp11    post    cc  0
sp11    post    dd  0
sp12    pre aa  0
sp12    pre bb  92.10526316
sp12    pre cc  7.894736842
sp12    pre dd  0
sp12    during  aa  41.53846154
sp12    during  bb  53.84615385
sp12    during  cc  0
sp12    during  dd  0
sp12    post    aa  0
sp12    post    bb  0
sp12    post    cc  0
sp12    post    dd  0
sp13    pre aa  0
sp13    pre bb  9.174311927
sp13    pre cc  5.504587156
sp13    pre dd  85.32110092
sp13    during  aa  12
sp13    during  bb  4
sp13    during  cc  81.6
sp13    during  dd  81.6
sp13    post    aa  0
sp13    post    bb  0
sp13    post    cc  0
sp13    post    dd  100
sp14    pre aa  0
sp14    pre bb  55.83756345
sp14    pre cc  36.54822335
sp14    pre dd  7.614213198
sp14    during  aa  42.39130435
sp14    during  bb  29.89130435
sp14    during  cc  8.152173913
sp14    during  dd  8.152173913
sp14    post    aa  0
sp14    post    bb  20.83333333
sp14    post    cc  60.41666667
sp14    post    dd  18.75
sp15    pre aa  0
sp15    pre bb  0
sp15    pre cc  66.66666667
sp15    pre dd  33.33333333
sp15    during  aa  50
sp15    during  bb  0
sp15    during  cc  25
sp15    during  dd  25
sp15    post    aa  0
sp15    post    bb  0
sp15    post    cc  0
sp15    post    dd  100
sp16    pre aa  0
sp16    pre bb  100
sp16    pre cc  0
sp16    pre dd  0
sp16    during  aa  64.28571429
sp16    during  bb  35.71428571
sp16    during  cc  0
sp16    during  dd  0
sp16    post    aa  0
sp16    post    bb  0
sp16    post    cc  66.66666667
sp16    post    dd  33.33333333
sp17    pre aa  0
sp17    pre bb  55.55555556
sp17    pre cc  44.44444444
sp17    pre dd  0
sp17    during  aa  45.78313253
sp17    during  bb  30.12048193
sp17    during  cc  0
sp17    during  dd  0
sp17    post    aa  0
sp17    post    bb  31.25
sp17    post    cc  54.16666667
sp17    post    dd  14.58333333
sp18    pre aa  0
sp18    pre bb  64.43298969
sp18    pre cc  34.02061856
sp18    pre dd  1.546391753
sp18    during  aa  53.31753555
sp18    during  bb  29.62085308
sp18    during  cc  1.421800948
sp18    during  dd  1.421800948
sp18    post    aa  0
sp18    post    bb  16.09195402
sp18    post    cc  51.72413793
sp18    post    dd  32.18390805
sp19    pre aa  0
sp19    pre bb  36.15702479
sp19    pre cc  58.88429752
sp19    pre dd  4.958677686
sp19    during  aa  35.01228501
sp19    during  bb  21.4987715
sp19    during  cc  8.476658477
sp19    during  dd  8.476658477
sp19    post    aa  0
sp19    post    bb  30.55555556
sp19    post    cc  57.22222222
sp19    post    dd  12.22222222
sp20    pre aa  0
sp20    pre bb  52.63157895
sp20    pre cc  29.47368421
sp20    pre dd  17.89473684
sp20    during  aa  24.32432432
sp20    during  bb  33.78378378
sp20    during  cc  22.97297297
sp20    during  dd  22.97297297
sp20    post    aa  0
sp20    post    bb  20
sp20    post    cc  30
sp20    post    dd  50
sp21    pre aa  0
sp21    pre bb  98.08102345
sp21    pre cc  0
sp21    pre dd  1.918976546
sp21    during  aa  42.05607477
sp21    during  bb  53.73831776
sp21    during  cc  4.205607477
sp21    during  dd  4.205607477
sp21    post    aa  0
sp21    post    bb  33.33333333
sp21    post    cc  33.33333333
sp21    post    dd  33.33333333
sp22    pre aa  0
sp22    pre bb  40.81632653
sp22    pre cc  48.97959184
sp22    pre dd  10.20408163
sp22    during  aa  39.09774436
sp22    during  bb  22.55639098
sp22    during  cc  11.27819549
sp22    during  dd  11.27819549
sp22    post    aa  15.15151515
sp22    post    bb  28.28282828
sp22    post    cc  41.41414141
sp22    post    dd  15.15151515
sp23    pre aa  0
sp23    pre bb  100
sp23    pre cc  0
sp23    pre dd  0
sp23    during  aa  47.36842105
sp23    during  bb  52.63157895
sp23    during  cc  0
sp23    during  dd  0
sp23    post    aa  80
sp23    post    bb  20
sp23    post    cc  0
sp23    post    dd  0
sp24    pre aa  0
sp24    pre bb  0
sp24    pre cc  100
sp24    pre dd  0
sp24    during  aa  9.523809524
sp24    during  bb  0
sp24    during  cc  0
sp24    during  dd  0
sp24    post    aa  0
sp24    post    bb  23.25581395
sp24    post    cc  53.48837209
sp24    post    dd  23.25581395
sp25    pre aa  0
sp25    pre bb  43.29004329
sp25    pre cc  43.29004329
sp25    pre dd  13.41991342
sp25    during  aa  40.54054054
sp25    during  bb  22.52252252
sp25    during  cc  14.41441441
sp25    during  dd  14.41441441
sp25    post    aa  8.080808081
sp25    post    bb  30.3030303
sp25    post    cc  37.87878788
sp25    post    dd  23.73737374

enter image description here

1 Ответ

3 голосов
/ 04 мая 2019

У вас есть несколько опечаток / неправильный синтаксис:

Сначала рассмотрим 2-й пример:

dados$time <- factor(dados$time, levels=c("pre", "during", "post"))
ggplot(data, aes(value, time, fill = anesthesia)) +
geom_point() +
  ggthemes::theme_few() +
  facet_wrap(~ specie)

Ваши данные называются dados, видимо, но вы используете ggplot(data, ...). Это отлично работает для меня, если я изменю ggplot(data, ...) на ggplot(dados, ...).


В первом примере вы смешиваете синтаксис dplyr и base несовместимыми способами. Всякий раз, когда вы используете канал %>%, вы должны передать в функцию.

dados %>% 
    #filter is a function, this works
  filter(anesthesia %in% c(aa, bb, cc, dd)) %>%
    # but you cannot pipe into this next line:
  dados$time <- factor(dados$time, levels=c("pre", "during", "post")) +
    # and you cannot use `+` before using `ggplot()`
  ggplot(aes(x=value,y=time, fill=factor(anesthesia))) +
  geom_point() +  
  ggthemes::theme_few() +
  facet_wrap(~ specie)

Переписать это во всех dplyr:

dados %>% 

  filter(anesthesia %in% c(aa, bb, cc, dd)) %>%
  mutate(time = factor(time, levels=c("pre", "during", "post")) %>%
  ggplot(aes(x=value,y=time, fill=factor(anesthesia))) +
  geom_point() +  
  ggthemes::theme_few() +
  facet_wrap(~ specie)

Решение: для меня это прекрасно работает

dados = dd
dados$time <- factor(dados$time, levels=c("pre", "during", "post"))

ggplot(dd, aes(value, time, color = anesthesia)) +
geom_point() +
  facet_wrap(~ specie)

enter image description here

Вы заметите, что я переключил fill на color для очков. Я также попытался добавить geom_text(aes(label = anesthesia)), чтобы напечатать текстовый код на графике, как при моделировании в фотошопе, но некоторые точки очень близки друг к другу, поэтому они выглядели не очень хорошо. С коробками они выглядели бы еще хуже, поэтому я не пробовал коробки.

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