ggplot2:scale_shape_manual

ggplot2で水準ごとに色分けすると結構わかりづらい。

plot of chunk unnamed-chunk-1

形で分けたくなるけど水準が多い場合デフォルトだとshapeが足りなくなる。

ggplot(smp, aes(x = year, y = value, group = country)) + geom_line(aes(color = country)) + 
    geom_point(aes(color = country, shape = country))

plot of chunk unnamed-chunk-2

したがってmanualで指定してやる必要がある。

ggplot(smp, aes(x = year, y = value, group = country)) + geom_line(aes(color = country)) + 
    geom_point(aes(color = country, shape = country)) + scale_shape_manual(values = seq_along(unique(smp$country)))

plot of chunk unnamed-chunk-3

symbolの番号対応表はこちら
http://wiki.stdout.org/rcookbook/Graphs/Shapes%20and%20line%20types/

追記(2012/8/16)

↓でmatplotによる鮮やかな解法が示されている。
http://blog.goo.ne.jp/r-de-r/e/29758f8210d278bcf4d0599664621fd2
同じようなことをggplot2でやるとすると下記だけど、まあmatplotで書いた方が簡潔でよいでしょうね。

last_plot() + geom_text(data = subset(smp, year == 2009), aes(x = 2010, 
    y = value, label = country), size = 2) + opts(legend.position = "none")

plot of chunk unnamed-chunk-4