ggparcoord:使用离散比例的颜色
ggparcoord: color using discrete scale
我似乎无法使用离散比例使我的 ggparcoord
绘图着色。当我这样做时:
ggparcoord(data = iris, columns = 1:4, groupColumn = "Species")
输出图仍在使用连续比例(使用 Species
因子的水平)为线条着色。
我还尝试了此处指定的 scale_color_manual
技巧的修改版本:,但无济于事。
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 page 上的示例也不起作用:
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.0
,GGally_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))
我似乎无法使用离散比例使我的 ggparcoord
绘图着色。当我这样做时:
ggparcoord(data = iris, columns = 1:4, groupColumn = "Species")
输出图仍在使用连续比例(使用 Species
因子的水平)为线条着色。
我还尝试了此处指定的 scale_color_manual
技巧的修改版本:
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 page 上的示例也不起作用:
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.0
,GGally_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))