在ggplot2中更改用于scale_shape()的形状

Chr*_*ois 32 r ggplot2

假设我有以下内容

y <- rnorm(10)
b <- as.factor(sample(1:4,10,replace=T))
qplot(1:10, y, shape=b)
Run Code Online (Sandbox Code Playgroud)

如何更改使用的形状ggplot2

Har*_*lan 44

ggplot的方法是scale_shape_manualvalues参数中使用并提供所需的形状:

qplot(1:10, y, shape=b) + scale_shape_manual(values = c(0, 5, 6, 15))
Run Code Online (Sandbox Code Playgroud)

结果如上

形状与通常的0-25索引相同:http://yusung.blogspot.com/2008/11/plot-symbols-in-r.html

  • 这是一种更好的方法,因为它保留了图例并与 ggplot 一起使用,而不是基本图形。我每天都在这里了解更多关于 ggplot 的知识,谢谢! (2认同)

nau*_*101 20

为了补充Harlan的答案,这里是可用形状的参考 - 从左下角0开始向右阅读然后向上看(10y + x):

df <- data.frame(x=c(0:129))
ggplot(df, aes(x=x%%10, y=floor(x/10), shape=factor(x), colour=x, size=10)) +
  geom_point() +
  scale_shape_manual(values=df$x) + theme(legend.position='none') +
  scale_x_continuous(breaks=0:10) + scale_y_continuous(breaks=0:12) +
  scale_colour_hue() + scale_colour_gradientn(colours=rainbow(3))
Run Code Online (Sandbox Code Playgroud)

ggplot2中提供的形状


Vin*_*nce 6

> y <- rnorm(10)
> b <- as.factor(sample(1:4,10,replace=T))
> qplot(1:10, y, shape=b)
> qplot(1:10, y, pch=letters[1:10], cex=6)
Run Code Online (Sandbox Code Playgroud)

你是这个意思吗?我想你可以使用任何R的绘图角色......

尽管如此,这可能不是一种非常"ggplot"的方式,但是手册页上写着"你可以像使用'plot'函数一样使用它." :-)

替代文字