5

次のデータフレームがあります。

 id  variable   value
 ID1    1A      91.98473282
 ID1    2A      72.51908397
 ID1    2B      62.21374046
 ID1    2D      69.08396947
 ID1    2F      83.39694656
 ID1    2G      41.60305344
 ID1    2H      63.74045802
 ID1    9A      58.40839695
 ID1    9C      61.10687023
 ID1    9D      50.76335878
 ID1    9K      58.46183206

ggplot2を使用して、データを含むヒートマップを生成しています。

     ggplot(data, aes(variable, id)) +
              geom_raster(aes(fill = value)) + 
              scale_fill_gradient(low = "white",
              high = "steelblue")

プロットは次のようになります: http ://dl.dropbox.com/u/26998371/plot.pdf

タイルは、上下にスペースを残すのではなく、y軸のプロットスペースを埋めたいと思います。

簡単な答えがあると思います。どんな助けでも大歓迎です。

scale_y_discrete(expand = c(0、0))はy軸では​​機能しませんでしたが、scale_x_discrete(expand = c(0、0))はx軸で機能してプロットスペースを埋めます。

4

1 に答える 1

6

更新 ggplot2 の最近のバージョンでは、この問題は解決されているようです。

idこれは、要因にレベルが 1 つしかないことに関係しています。id係数を数値に変更するか、係数を変更idして 2 つのレベルを持つようにすると、タイルがスペースを埋めます。また、coord_equal()元のid要素を使用すると、細長いプロットが得られますが、再びスペースが埋められます。

## Your data
df = read.table(text = "
id  variable   value
ID1    1A      91.98473282
ID1    2A      72.51908397
ID1    2B      62.21374046
ID1    2D      69.08396947
ID1    2F      83.39694656
ID1    2G      41.60305344
ID1    2H      63.74045802
ID1    9A      58.40839695
ID1    9C      61.10687023
ID1    9D      50.76335878
ID1    9K      58.46183206", header = TRUE, sep = "")

library(ggplot2)

 # Change the id factor
 df$id2 = 1                   # numeric
 df$id3 = c(rep("ID1", 5), rep("ID2", 6))      # more than one level

 # Using the numeric version
 ggplot(df, aes(variable, id2)) +
          geom_raster(aes(fill = value)) + 
          scale_y_continuous(breaks = 1, labels = "ID1", expand = c(0,0)) + 
          scale_x_discrete(expand = c(0,0)) +
          scale_fill_gradient(low = "white",
          high = "steelblue")

ここに画像の説明を入力

# Two levels in the ID factor
ggplot(df, aes(variable, id3)) +
          geom_tile(aes(fill = value)) + 
          scale_fill_gradient(low = "white",
          high = "steelblue") 

# Using coord_equal() with the original id variable
ggplot(df, aes(variable, id)) +
          geom_tile(aes(fill = value)) + 
          scale_fill_gradient(low = "white",
          high = "steelblue") +
          coord_equal()
于 2012-05-08T20:41:45.960 に答える