Shape palette from Cleveland "Elements of Graphing Data" (discrete).

# overlapping symbol palette
dsamp <- diamonds[sample(nrow(diamonds), 100), ]
(qplot(carat, price, data=dsamp, shape=cut)
+ theme_bw() + scale_shape_cleveland())

plot of chunk cleveland_shape_pal

# non-overlapping symbol palette
(qplot(carat, price, data=dsamp, shape=cut)
+ theme_bw() + scale_shape_cleveland(overlap=FALSE))

plot of chunk cleveland_shape_pal