2012-01-09 9 views
6

ハドレーの本を勉強してここを検索した結果、時系列変数の変化率に応じて色が変化する年月のマトリックスからなるヒートマップが作成されました。ヒートマップとこれを取得するために使用したコードを以下に示します。私は私自身で解決できなかったいくつかの残りの質問があります。geom_tile()を使用したR ggplotヒートマップ:年単位で並べ替え、すべての年をy軸で表示する方法は?

1)y軸の年が最も古いものから最新のものになるように行列を並べ替える/並べ替えるにはどうすればよいですか?この場合、私は年を1995年の上から始め、y軸の下端で2011年まで続けたいと思っています。

2)毎年y軸に表示するが、代わりに5年ごとに表示したい。私は自分のコードのscale_y_dateがこれに対処すると考えましたが、影響はないようです。 y軸を毎年強制的に表示するにはどうすればよいですか?

3)これはまだggplot2の「やるべき」リストにあると思われますが、x軸ラベル(この場合はJan、Feb、Mar、Aprなど)を一番上に表示する方法はありますか下からではなくプロットの?最初の2点については

require(ggplot2) 
mydf <- data.frame(date=seq(as.Date("1995/1/1"), by="month", length.out=203),yoy=runif(203, min=-1, max=1)) 
p_heat <- ggplot(mydf, aes(x=month(date,label=TRUE),y=year(date), fill = yoy, label = sprintf("%1.1f%%", 100*yoy),size=10)) + 
    scale_y_date(major="years", format="%Y") + 
    geom_tile() + geom_text(aes(size=10)) + 
    scale_fill_gradient2(low = "red", high = "green") + 
    scale_x_discrete(expand=c(0,0)) + 
    scale_y_continuous(expand=c(0,0)) + 
    opts(title="Value (%)") + 
    opts(panel.grid.minor=theme_blank()) + 
    opts(axis.ticks = theme_blank()) + 
    opts(panel.grid.major=theme_blank()) + 
    opts(axis.title.y = theme_blank()) + 
    opts(axis.title.x = theme_blank()) + 
    opts(legend.position = "none") 
p_heat 

enter image description here

+4

男性の〜10%は負の値から正の値を区別するのが非常に難しいので、赤緑色のスキームは避けてください。 – hadley

答えて

5

、あなたは上に早い年を持っているscale_y_reversescale_y_continuousを交換し、明示的に休憩やラベルを指定することができます。

p_heat + scale_y_reverse(breaks=1995:2011, labels=1995:2011, expand=c(0,0)) 
+0

ヴィンセントに感謝、それは私のために働く。誰かが同じタイムゾーンにいるのに便利です! – SlowLearner

+0

ちなみに、誰かがヒートマップ自体のフォントのサイズを最適に制御するために、このコードフラグメントに "size"引数を置くべき場所について誰かが見ていますか?それはggplot文、geom_tile、geom_text部分、または...にあるべきですか? – SlowLearner

+0

サイズは "aes"の外にある必要があります。そうでない場合は、1の値のファクタとして解釈され、効果はありません:geom_text(size = 10)は動作するはずです。 –

関連する問題