我想从一个数据帧的两个系列'Pos‘和'Neg’(y值)中生成一个情节。X值位于“平均值”列中。我想要这个系列有不同的颜色。
搜索堆栈溢出给了我一个类似的问题:ggplot2中的点(),但我想使用aes_string,以便在检查包时避免注释。
我让它工作使用aes和‘自动’颜色,如下面的第一个例子。然而,我不知道如何使用aes_string生成相同的情节,并且仍然让ggplot决定颜色。我觉得这应该是件简单的事..。
可复制的例子:
exData <- data.frame(Marker = rep("TH01", 10),
Mean = seq(1:10),
Neg = -1*runif(10,0.1,1),
Pos = runif(10,0.1,1))
# Produce the correct plot, with 'automatic' colours.
gp <- ggplot(exData, aes_string(x="Mean"),
shape=val_shape, alpha=val_alpha)
gp <- gp + geom_point(aes(y=Pos, colour="Max"))
gp <- gp + geom_point(aes(y=Neg, colour="Min"))
gp <- gp + scale_colour_discrete(name = "Legend")
print(gp)
# Produce the correct plot, but not with 'automatic' colours.
gp <- ggplot(exData, aes_string(x="Mean"),
shape=val_shape, alpha=val_alpha)
gp <- gp + geom_point(aes_string(y="Pos"), colour=1)
gp <- gp + geom_point(aes_string(y="Neg"), colour=2)
gp <- gp + scale_colour_discrete(name = "Legend")
print(gp)发布于 2013-12-08 21:23:53
对于ggplot2来说,数据的格式化方式并不理想。首先将其转换为“长”格式:
library(reshape2)
exData.m <- melt(exData, id.vars=c("Marker", "Mean"))
ggplot(exData.m, aes(x=Mean, y=value, color=variable)) + geom_point()

作为经验法则,每一种美学(x,y,颜色,形状,alpha,.)需要绘制数据帧中的列。reshape2库在这里很有用。
发布于 2013-12-08 22:18:13
为了直接回答你的问题,ggplot在你的第一个情节中组合了所有的颜色标记(这里是“Max”和"Min“),并将它们视为一个因素。然后,它使用默认的调色板,它在对这个问题的响应中以及在R食谱中都有很好的描述。因此,"Max“被视为默认调色板中的第一个颜色,该调色板有两种颜色。
在第二幅图中,您将指定颜色数字(整数)。在这种情况下,ggplot恢复到默认的R颜色调色板,如下所示:
y <- 1:6
barplot(y,col=y)若要使用aes_string(...)获取默认颜色,请使用@krlmlr描述的方法。
https://stackoverflow.com/questions/20459205
复制相似问题