首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用scale_color_manual着色

用scale_color_manual着色
EN

Stack Overflow用户
提问于 2016-11-22 16:23:02
回答 2查看 663关注 0票数 0

我有一个像这样的数据框架:

代码语言:javascript
复制
   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线在哪里

代码语言:javascript
复制
 ggplot(d, 
             aes(x=factor(Group),
                 y=  value,
                 group= Name , color =Name)) +
      geom_point()+geom_line() 

现在,我想用比例尺颜色手册给线条着色,如下所示:

代码语言:javascript
复制
      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中的颜色来调整颜色手册以更改输出,但保留正确的输出?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-22 16:28:55

函数unique()按顺序返回值,因为它们位于数据帧中。

代码语言:javascript
复制
unique(d$Name)
[1] B A
Levels: A B

所以您应该使用函数levels()

代码语言:javascript
复制
levels(d$Name)
[1] "A" "B"

如果变量未作为因子存储,则可以添加sort()函数。

代码语言:javascript
复制
sort(unique(d$Name))
[1] "A" "B"
票数 2
EN

Stack Overflow用户

发布于 2016-11-22 16:44:06

使用labelsscale_color_manual函数中更改标签名是任意的。

例如,运行以下代码:

代码语言:javascript
复制
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中使用该向量

代码语言:javascript
复制
newPal<-setNames(col_vector[14:(14+(length(unique(d$Name)) )-1)],unique(d$Name))

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

https://stackoverflow.com/questions/40746859

复制
相关文章

相似问题

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