繁体   English   中英

ggparcoord:使用离散比例的颜色

[英]ggparcoord: color using discrete scale

我似乎无法使用离散比例来获取我的ggparcoord图。 当我这样做:

ggparcoord(data = iris, columns = 1:4, groupColumn = "Species")

输出图仍然使用连续比例(使用Species因子的水平)对线条着色。

在此输入图像描述

我还尝试了这里指定的scale_color_manual技巧的修改版本: 控制ggparcoord中的颜色 ,但无济于事。

ggparcoord(data = iris, columns = 1:4, groupColumn = "Species") + 
    scale_color_manual(values = c("setosa" = "red", 
                                  "versicolor" = "green", 
                                  "virginica" = "blue"))

但我收到此错误消息: Error: Continuous value supplied to discrete scale

我也试过.. + scale_color_discrete() :同样的错误信息。

很难过 ......即使ggparcorod cran页面上的例子都不起作用:

data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1],100),]
ggparcoord(data = diamonds.samp,columns = c(1,5:10),groupColumn = 2)

错误消息: Error: (list) object cannot be coerced to type 'double'

编辑

有一个解决方案是使用mapping=aes(color=as.factor(Species)) ,如下面的Didzis Elferts的回答所示。 但是,它需要在scale_color_discrete添加一些进一步的自定义

ggparcoord(data = iris, columns = 1:4, mapping=aes(color=as.factor(Species))) +
        scale_color_discrete("Species", labels=levels(iris$Species) )

有没有一种方法可以完成相同的事情无需添加scale_color_discrete("Species", labels=levels(iris$Species) )部分

在此输入图像描述

例如,在ggplot2

ggplot(data=iris, aes(x=Sepal.Width,y=Sepal.Length,color=Species)) + geom_point()

自动生成标记精美的传说。 ggparcoord有类似的方法吗?

我使用的是R版本3.2.1, ggplot2_2.0.0GGally_1.0.0

sessionInfo()
# R version 3.2.1 (2015-06-18)
# Platform: x86_64-apple-darwin13.4.0 (64-bit)
# Running under: OS X 10.10.5 (Yosemite)
# 
# locale:
# [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
# 
# attached base packages:
# [1] stats     graphics  grDevices utils     datasets  methods   base     
# 
# other attached packages:
# [1] ggplot2_2.0.0 GGally_1.0.0  magrittr_1.5  dplyr_0.4.3  

任何帮助将非常感激!

一种解决方案是使用参数mapping=并将其设置为as.factor(Species) (不使用as.factor()它会给出与问题相同的结果)。 然后使用scale_color_discrete()您可以将Species名称作为标签。

ggparcoord(data = iris, columns = 1:4, mapping=aes(color=as.factor(Species)))+
  scale_color_discrete("Species",labels=levels(iris$Species))

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM