R: ggplot2 не правильно фитируется [дубликат]

<div>foo</div><div>bar</div><div>baz</div>
//solution 1
<style>
    #div01, #div02, #div03 {
                                float:left;
                                width:2%;
    }   
 </style>
 <div id="div01">foo</div><div id="div02">bar</div><div id="div03">baz</div>

 //solution 2

 <style>
      #div01, #div02, #div03 {
                                  display:inline;
                                  padding-left:5px;
      }   
</style>
<div id="div01">foo</div><div id="div02">bar</div><div id="div03">baz</div>

 /* I think this would help but if you have any other thoughts just let me knw      kk */
10
задан Tung 14 June 2018 в 02:53
поделиться

1 ответ

tl; dr

Никогда не использует [ или $ внутри aes().


Рассмотрим этот иллюстративный пример, фасетная переменная f намеренно в неочевидном порядке относительно x

d <- data.frame(x=1:10, f=rev(letters[gl(2,5)]))

. Теперь сравните то, что происходит с этими двумя графиками,

p1 <- ggplot(d) +
  facet_grid(.~f, labeller = label_both) +
  geom_text(aes(x, y=0, label=x, colour=f)) +
  ggtitle("good mapping") 

p2 <- ggplot(d) +
  facet_grid(.~f, labeller = label_both) +
  geom_text(aes(d$x, y=0, label=x, colour=f)) +
  ggtitle("$ corruption") 

Мы можем получить лучшее представление о том, что происходит, если посмотреть на data.frame, созданный внутренне ggplot2 для каждой панели,

 ggplot_build(p1)[["data"]][[1]][,c("x","PANEL")]

    x PANEL
1   6     1
2   7     1
3   8     1
4   9     1
5  10     1
6   1     2
7   2     2
8   3     2
9   4     2
10  5     2

 ggplot_build(p2)[["data"]][[1]][,c("x", "PANEL")]

    x PANEL
1   1     1
2   2     1
3   3     1
4   4     1
5   5     1
6   6     2
7   7     2
8   8     2
9   9     2
10 10     2

. Второй график имеет неправильное отображение, потому что, когда ggplot создает data.frame для каждой панели, он выбирает значения x в «неправильном» порядке.

Это происходит из-за того, что использование $ нарушает связь между различными отображаемыми переменными (ggplot должен считать, что это независимая переменная, которая, как известно, может исходить от произвольного, отключенного источника). Поскольку data.frame в этом примере не упорядочен в соответствии с коэффициентом f, подмножество данных. Кадры, используемые внутри каждой панели, принимают неправильный порядок.

24
ответ дан baptiste 15 August 2018 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: