2017-12-15 21 views
1

ヘッダーにあるように、ヒートマップに1つのビジュアルレイヤーを追加したいと思います。 Inputヒートマップにバープロットレイヤーを追加する(geom_tile)

サンプルデータはmpgです。

library(tidyverse) # for dplyr and ggplot2 

data <- mpg %>% 
    mutate(quantity = 1, isnew = ifelse(year == 2008, 1, 0)) %>% 
    group_by(drv, class) %>% 
    summarise(quantity = sum(quantity), isnew = round(sum(isnew)/quantity, 2)) 

2つのカテゴリが主軸クラスとdrvです。 数量はクラスとdrvの各交差点の単なる車の数です。 Isnewは新車(2008年対1999年)のシェアです。

 drv  class quantity isnew 
    <chr>  <chr> <dbl> <dbl> 
1  4 compact  12 0.67 
2  4 midsize  3 0.67 
3  4  pickup  33 0.52 
4  4 subcompact  4 0.00 
5  4  suv  51 0.53 
6  f compact  35 0.40 
7  f midsize  38 0.50 
8  f minivan  11 0.45 
9  f subcompact  22 0.50 
10  r 2seater  5 0.60 
11  r subcompact  9 0.56 
12  r  suv  11 0.55 

私が達成したい何ヒートマップ

ggplot(data, aes(class, drv)) + 
    geom_tile(aes(fill = quantity)) + 
    geom_text(aes(label = isnew)) 

は、積層されたバーの各セクションのテキスト値を変更することです。 ヒートマップの初期色を保存するには、各バーの一番上のチャンクが透明でなければなりません。下の1つはヒートマップのそのセクターの値isnewを表す必要があります。

は、一部描画(ほんのバーを、しかし、私はそれらすべてをしたい)ペイントそれはおそらくggsubpolotパッケージを介して行うことができることをin here見つかり8P

Output

で所望の出力の。しかしGrolemund githubに述べられているように、ggplot2のグラフィックスには埋め込まれていません。

答えて

1

このプロットはかなり混乱しているようですが、私はそれを作る際に亀裂を感じることに抵抗できませんでした。 geom_segmentを使用してバーを作成し、基礎となるdrv因子コーディングを使用して、バーとテキストラベルをy軸上の適切な位置に配置します。

ggplot(data, aes(class, drv)) + 
    geom_tile(aes(fill = quantity), colour="white", size=0.5) + 
    geom_segment(aes(y=as.numeric(as.factor(drv)) - 0.5, 
        yend=as.numeric(as.factor(drv)) - 0.5 + isnew, 
        x=class, xend=class), 
       colour="yellow", size=10) + 
    geom_text(aes(label = isnew, y=(2*as.numeric(as.factor(drv)) + isnew)/2 - 0.5), 
      colour="grey30", size=3) + 
    theme_classic() 

enter image description here

おそらく良いだろう大きさの美学とgeom_pointを使用して:

ggplot(data, aes(class, drv)) + 
    geom_tile(aes(fill = quantity), colour="white", size=0.5) + 
    geom_point(aes(size=isnew), shape=21, fill="white") + 
    scale_size_continuous(range=c(1,10)) + 
    theme_classic() 

enter image description here

関連する問題