如何仅为ggplot中的一个组应用手动着色

时间:2016-06-24 14:19:46

标签: r ggplot2

假设一个2x2矩阵,其中输入矩阵中有两行(每个都呈现technique),每行有两列。现在我想绘制一个ggplot。在ggplot中设置线条颜色的典型方法中,我们将color设置为沿一个维度(即列)和linetype沿其他维度(即行)变化:

geom_line(aes(color=m, linetype=techniques))

对于属于其中一个组的所有行,是否有办法强制使用1种颜色,即黑色?例如,有没有办法做类似的事情:

### do this first
geom_line(aes(color=m, linetype=techniques))

###and then change the colors for one of the groups, i.e. for techniques1
scale_color_manual(values=c("black", "black"))

上述解决方案为两个组(技术1和技术2)更改了它。

2 个答案:

答案 0 :(得分:0)

方法1

 df <- mtcars
ggplot(data=df,aes(x=mpg,y=hp)) +geom_line(colour = "black") +geom_line(aes(x=mpg,y=cyl),colour = "black")

enter image description here

或方法2

df <- mtcars
df1 <- df[,-2,-3]
df2 <- df[,-4,-5]
ggplot(data=df1,aes(x=mpg,y=hp)) +geom_line(colour = "black")+geom_line(data=df2,aes(x=mpg, y = cyl), colour="black")

enter image description here

我知道y轴不是同一个单位..但这只是为了说明你是如何做到的。

答案 1 :(得分:0)

您可能需要创建一个新变量来控制颜色,例如

df$newColor <- paste(df$techniques, df$m, sep = "_")
df$newColor[df$techniques == "1"] <- "technique 1"

或者,如果您有更多需要着色的技术,但未单独命名:

df$newColor <- df$techniques
df$newColor[df$techniques == "1"] <- "technique 1"

然后使用newColor列作为颜色变量