我有一个像这样的数据框架:
d= data.frame(Name = c("B","A","A","B","A","B"),
Group= c("one","one","two","two","three","three"),
value=c(.5,.6,.7,.8,.4,.2))
d
Name Group value
1 B one 0.5
2 A one 0.6
3 A two 0.7
4 B two 0.8
5 A three 0.4
6 B three 0.2我画的时候是这样的。注意A线在哪里
ggplot(d,
aes(x=factor(Group),
y= value,
group= Name , color =Name)) +
geom_point()+geom_line()

现在,我想用比例尺颜色手册给线条着色,如下所示:
library(RColorBrewer)
n <- 60
qual_col_pals = brewer.pal.info[brewer.pal.info$category == 'qual',]
col_vector = unlist(mapply(brewer.pal, qual_col_pals$maxcolors, rownames(qual_col_pals)))
ggplot(d,
aes(x=factor(Group),
y= value,
group= Name , color =Name)) +
geom_point()+geom_line() +
scale_color_manual(name="name",
labels = unique(d$Name)
,
values= col_vector[14:(14+(length(unique(d$Name)) )-1 )]
)这会产生"A“行不正确的图像。现在是"B“字了。如何使用col_vector中的颜色来调整颜色手册以更改输出,但保留正确的输出?

发布于 2016-11-22 16:28:55
函数unique()按顺序返回值,因为它们位于数据帧中。
unique(d$Name)
[1] B A
Levels: A B所以您应该使用函数levels()。
levels(d$Name)
[1] "A" "B"如果变量未作为因子存储,则可以添加sort()函数。
sort(unique(d$Name))
[1] "A" "B"发布于 2016-11-22 16:44:06
使用labels在scale_color_manual函数中更改标签名是任意的。
例如,运行以下代码:
p <- ggplot(d, aes(x=factor(Group),y= value,
group= Name , color =Name)) +geom_point()+geom_line()
p <- scale_color_manual(labels = c('ti','to'),
values= col_vector[14:(14+(length(unique(d$Name)) )-1)])然后,d$Name中的第一个条目是B (这是unique要返回的)。
我建议先创建一个命名向量,然后在scale_color_manual中使用该向量
newPal<-setNames(col_vector[14:(14+(length(unique(d$Name)) )-1)],unique(d$Name))
p + scale_color_manual(values=newPal)https://stackoverflow.com/questions/40746859
复制相似问题