我对R是新手,我的目标是用回归线和置信椭圆创建一个很好的xy散点图。我已经教会自己如何使用ggplot2创建xy-图、回归线和圆圈,但是现在我被颜色困住了。
在我使用随机数的例子中,我有4个数据组,我想改变颜色。我设法用彩色酿酒机改变了它们,但我不喜欢它们的任何预置,我想定义我自己的预置。
这是我的代码,到目前为止,彩色酿酒商:
library(ggplot2)
data = read.csv("test.csv")
data$type <- factor(data$type, levels=c("bbb","ccc","aaa","ddd"))
g = aes(x=alpha, y=beta, color=type, group=type)
p_test <- ggplot(subset(data, id %in% c("a1", "b1"))) +
geom_point(g) +
stat_ellipse(g) +
geom_smooth(g, method=lm, se=FALSE) +
scale_color_brewer(palette="Set3") +
expand_limits(x=c(1,11), y=c(1,11)) +
xlab(expression(paste(italic(blah[p]), " in q ", r^-1))) +
ylab(expression(paste(lambda, " in K ", l^-2*M^-3))) +
ggtitle("blahblah") +
theme(legend.justification=c(0,1), legend.position=c(0,1), legend.title=element_blank())数据表如下所示:
> data
id alpha beta type
1 a1 1.2 1.1 aaa
2 a1 6.6 3.4 bbb
3 a1 3.7 6.4 ccc
4 a1 2.7 6.4 aaa
5 a1 5.3 6.3 bbb
6 a1 4.5 8.1 ccc
7 a1 10.5 9.0 bbb
8 a1 9.9 5.3 aaa
9 a1 2.8 5.3 bbb
10 a1 5.4 1.6 ccc
11 a1 3.4 10.7 aaa
12 a1 8.0 4.0 bbb
13 a1 6.1 6.5 ccc
14 a1 8.8 9.0 bbb
15 a1 8.1 1.1 aaa
16 a1 4.2 3.8 bbb
17 a1 9.1 1.2 ccc
18 a1 4.4 2.3 aaa
19 a1 8.8 7.8 bbb
20 a1 11.0 2.5 ccc
21 a1 7.0 9.4 bbb
22 b1 9.5 7.8 ddd
23 b1 7.6 4.5 ddd
24 b1 10.8 7.5 ddd
25 b1 5.6 4.5 ddd
26 b1 8.9 11.0 ddd
27 c1 8.1 7.0 fff
28 c1 7.5 9.3 fff
29 c1 3.1 6.0 ggg然后我试着改变颜色。这就是我的问题开始的地方:
1.)首先,我想试试彩虹梯度。所以我换了
scale_color_brewer(palette="Set3") +使用
scale_colour_gradientn(colours=rainbow(4)) +这给了我一个“离散值提供给连续尺度”的错误。这是什么意思?
2.)接下来,我尝试用以下方法定义固定颜色
scale_fill_manual(values=c("red", "blue", "green", "orange")) +这返回了一个情节,但没有定义的颜色。它们看起来像缺省值吗?为什么?
3.)最后,我试图定义我自己的梯度。我要从黄色到红色。所以我用
scale_colour_gradientn(colours=c("yellow", "red")) +这再次导致了一个错误:离散值提供给连续的尺度。
然后我放弃了。
有人能告诉我我做错了什么吗?为什么彩色酿酒机能工作,而其他的就不行了?
发布于 2016-02-17 15:42:15
阿里斯泰尔已经回答了这个问题。由于审美color映射到一个factor变量,所以ggplot期望颜色标度在本质上是离散的(如上面的#2 )。
所以试试这个:
library(ggplot2)
data = read.csv("test.csv")
data$type <- factor(data$type, levels=c("bbb","ccc","aaa","ddd"))
g = aes(x=alpha, y=beta, color=type, group=type)
p_test <- ggplot(subset(data, id %in% c("a1", "b1"))) +
geom_point(g) +
stat_ellipse(g) +
geom_smooth(g, method=lm, se=FALSE) +
expand_limits(x=c(1,11), y=c(1,11)) +
xlab(expression(paste(italic(blah[p]), " in q ", r^-1))) +
ylab(expression(paste(lambda, " in K ", l^-2*M^-3))) +
ggtitle("blahblah") +
theme(legend.justification=c(0,1), legend.position=c(0,1), legend.title=element_blank())
# These work fine
p_test + scale_color_manual(values = rainbow(4))
p_test + scale_color_manual(values = c("red", "blue", "green", "orange"))
p_test + scale_color_manual(values = RColorBrewer::brewer.pal(4, "Set3"))
p_test + scale_color_discrete(h = c(0,360), c = 100, l = 50)
# This wont work
p_test + scale_color_gradient(low = "blue", high = "red")误差Error: Discrete value supplied to continuous scale是指颜色标度在本质上是连续的,而变量是离散的(factor)。
希望这能帮上忙。
https://stackoverflow.com/questions/35459777
复制相似问题