Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot,设置一条几何图形线的颜色,但不设置另一条几何图形线的颜色_R_Ggplot2 - Fatal编程技术网

R ggplot,设置一条几何图形线的颜色,但不设置另一条几何图形线的颜色

R ggplot,设置一条几何图形线的颜色,但不设置另一条几何图形线的颜色,r,ggplot2,R,Ggplot2,我有一个数据表,每个名称有2个名称和3种类型 dt = CJ(as.Date(c('2000-01-01','2000-01-02','2000-01-03','2000-01-04')), c('A','B'), c('t1','t2','t3')) setnames(dt, c('date','name','type')) dt[, type := paste0(name, type)] dt[, value := rnorm(n = .N) + (name == 'A')] date

我有一个数据表,每个名称有2个名称和3种类型

dt = CJ(as.Date(c('2000-01-01','2000-01-02','2000-01-03','2000-01-04')), c('A','B'), c('t1','t2','t3'))
setnames(dt, c('date','name','type'))
dt[, type := paste0(name, type)]
dt[, value := rnorm(n = .N) + (name == 'A')]


date           name type      value
1: 2000-01-01    A  At1  0.3872948
2: 2000-01-01    A  At2 -0.6147802
3: 2000-01-01    A  At3  2.2317864
4: 2000-01-01    B  Bt1  0.4979870
5: 2000-01-01    B  Bt2 -1.7946112
6: 2000-01-01    B  Bt3  0.7247306
7: 2000-01-02    A  At1  0.3148835
8: 2000-01-02    A  At2  0.1124225
9: 2000-01-02    A  At3  1.1758116
10: 2000-01-02    B  Bt1 -0.7068185
11: 2000-01-02    B  Bt2 -1.6968477
12: 2000-01-02    B  Bt3  0.4575144
....
按类型绘制,但按名称绘制颜色,因此我们得到3条红线和3条蓝线

ggplot(dt) + geom_line(aes(x = date, y = value, group = type, col = name))
现在我想添加两行,表示每个名称的平均值

mdt = dt[, .(value = mean(value)), by = 'name,date']

ggplot(dt) + geom_line(aes(x = date, y = value, group = type, col = name)) + 
  geom_line(data = mdt, aes(x = date, y = value, col = name), size = 1.5)

这将使用完全相同的2种颜色,用于单独的线条以及平均线条。如何为平均线指定不同的颜色?

用单独的
geom\u线
图层绘制
mdt
线,并指定其中的颜色。
使用带有redish颜色的
geom_线(data=mdt[name==“A”],col=“#ff5a32”)
命名绘图平均线。对于较细的线条,请使用
scale\u color\u manual
指定类似的颜色

library(data.table)
library(ggplot2)

mdt <- dt[, .(value = mean(value)), by = .(name, date)]

ggplot(dt, aes(date, value)) + 
    geom_line(aes(group = type, col = name)) + 
    geom_line(data = mdt[name == "A"], col = "#ff5a32", size = 2) +
    geom_line(data = mdt[name == "B"], col = "#475cd3", size = 2) +
    scale_colour_manual(name = "Name", 
                        values = c("#ff987f", "#8c99e4")) +
    labs(x = "Date",
         y = "Value", 
         title = "Change in value over time") +
    theme_classic()
库(data.table)
图书馆(GG2)

mdt您想对legend做什么?那里有四种颜色?理想情况下,我将使用稍微不同的颜色作为平均线,所以我只需要两个图例“红色a,蓝色B”。但图例的任何配置都可以开始,您只需将color参数置于aes之外,并将其映射到显式颜色:
geom_行(data=mdt,aes(x=date,y=value),col=“#000000”,size=1.5)