首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用geom_point时,ggplot2中两个aes_string ()的颜色

使用geom_point时,ggplot2中两个aes_string ()的颜色
EN

Stack Overflow用户
提问于 2013-12-08 21:16:28
回答 2查看 2.4K关注 0票数 5

我想从一个数据帧的两个系列'Pos‘和'Neg’(y值)中生成一个情节。X值位于“平均值”列中。我想要这个系列有不同的颜色。

搜索堆栈溢出给了我一个类似的问题:ggplot2中的点(),但我想使用aes_string,以便在检查包时避免注释。

我让它工作使用aes和‘自动’颜色,如下面的第一个例子。然而,我不知道如何使用aes_string生成相同的情节,并且仍然让ggplot决定颜色。我觉得这应该是件简单的事..。

可复制的例子:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-08 21:23:53

对于ggplot2来说,数据的格式化方式并不理想。首先将其转换为“长”格式:

代码语言:javascript
复制
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库在这里很有用。

票数 5
EN

Stack Overflow用户

发布于 2013-12-08 22:18:13

为了直接回答你的问题,ggplot在你的第一个情节中组合了所有的颜色标记(这里是“Max”和"Min“),并将它们视为一个因素。然后,它使用默认的调色板,它在对这个问题的响应中以及在R食谱中都有很好的描述。因此,"Max“被视为默认调色板中的第一个颜色,该调色板有两种颜色。

在第二幅图中,您将指定颜色数字(整数)。在这种情况下,ggplot恢复到默认的R颜色调色板,如下所示:

代码语言:javascript
复制
y <- 1:6
barplot(y,col=y)

若要使用aes_string(...)获取默认颜色,请使用@krlmlr描述的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20459205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档