【发布时间】:2015-09-25 07:46:23
【问题描述】:
所以当我必须绘制很多线时,我可以通过颜色或线型来区分它们
library(ggplot2)
pd = cbind.data.frame(x = rep(c(1,2), each = 4),
y = rep(1:4, times=2),
type = rep(c("A", "B", "C", "D"), times=2))
ggplot(pd, aes(x=x, y=y, col=type)) + geom_line() + theme_bw()
ggplot(pd, aes(x=x, y=y, lty=type)) + geom_line() + theme_bw()
给予:
但我想要两者,并且我希望自动选择颜色和线型(即,我不想为每个 type 手动指定颜色和线型,如在这个问题中:ggplot2 manually specifying color & linetype - duplicate legend)。
这是我想要的输出的示例(加上自动生成的图例):
理想的命令是
ggplot(pd, aes(x=x, y=y, style=type)) + geom_line() + theme_bw()
但我想需要有一个解决方法。
P.S:这样做的动机是 20 多条线很难仅通过颜色或线型来区分,这就是为什么我正在寻找两者的组合。因此,红色虚线与红色实线不同,两者都与蓝色实线不同。而且我不想每次将数据提供给ggplot时自己指定和选择颜色和线型。
【问题讨论】:
-
当你说“颜色或线型”时,你的意思是不是both?比如
ggplot(pd, aes(x=x, y=y, lty=type, col=type)),就是四种线型四种颜色。 -
所以,要明确一点,在您的第三个图中,两条蓝线之间没有特殊联系,您只想使用 2 种颜色和 2 种线型来获得 2*2 = 4 个不同的类别?
-
@Gregor 确切地说,我在 P.S. 中添加了一个动机。我的问题
-
创建图会相当容易,只需在数据中获取一些虚拟变量。然而,获得准确、简洁的图例将非常困难。