你如何使用 facet_wrap() 和 ggplot 控制颜色
how do you control color using facet_wrap() and ggplot
我有一个看起来像这样的图表:
x = c( rep(c(1,2,3,4,5),4) )
group = c( rep(c(10,10,10,10,10),2),rep(c(20,20,20,20,20),2) )
value = rnorm(20)
dat = data.frame( x= x , group = group, value = value)
dat = dat %>% # create the mu, sd, q1 and q3 aggregates
group_by(group,x) %>%
summarise(mu = round(mean(value),2),
sd= sqrt(round(sd(value),2)),
Q1 = quantile(value)[2],
Q3 = quantile(value)[4],
count = n())
dat
dat2 = dat %>% gather (key = Metric, value= Value,c(mu, sd, Q1, Q3)) #melt the data
as.data.frame(dat2)
ggplot(data=dat2 , aes(x=x, y=Value, group = Metric,colour = Metric)) +
geom_line() + geom_point() + ylab("value") +
xlab("v") +
scale_x_discrete(breaks = c( seq(1,5,1) ) ) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_y_continuous(breaks = c( seq(-3,3,.25) ) ) +
scale_colour_manual(values=c("blue", "blue", "red","red")) +
facet_wrap(~ group, ncol=3)
对于每组,线条是标准差、平均值、第一和第三四分位数。我希望 mean 和 sd 为蓝色,第一和第三四分位数为红色。可以看到颜色不对。
(1) 如何控制线条的颜色,使 sd 和 mean 为蓝色,四分位数为红色?
(2) 如何让图例也与线条相匹配?
谢谢。
您可以按如下方式更改 scale_colour_manual
中的值向量:
scale_colour_manual(values=c(mu = "blue", sd = "blue", Q1 = "red", Q3 = "red"))
这样,顺序就不重要了。
完整的 ggplot
命令是:
ggplot(data=dat2 , aes(x=x, y=Value, group = Metric,colour = Metric)) +
geom_line() + geom_point() + ylab("value") +
xlab("v") +
scale_x_discrete(breaks = c( seq(1,5,1) ) ) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_y_continuous(breaks = c( seq(-3,3,.25) ) ) +
scale_colour_manual(values=c(mu = "blue", sd = "blue", Q1 = "red", Q3 = "red")) +
facet_wrap(~ group, ncol=3)
我有一个看起来像这样的图表:
x = c( rep(c(1,2,3,4,5),4) )
group = c( rep(c(10,10,10,10,10),2),rep(c(20,20,20,20,20),2) )
value = rnorm(20)
dat = data.frame( x= x , group = group, value = value)
dat = dat %>% # create the mu, sd, q1 and q3 aggregates
group_by(group,x) %>%
summarise(mu = round(mean(value),2),
sd= sqrt(round(sd(value),2)),
Q1 = quantile(value)[2],
Q3 = quantile(value)[4],
count = n())
dat
dat2 = dat %>% gather (key = Metric, value= Value,c(mu, sd, Q1, Q3)) #melt the data
as.data.frame(dat2)
ggplot(data=dat2 , aes(x=x, y=Value, group = Metric,colour = Metric)) +
geom_line() + geom_point() + ylab("value") +
xlab("v") +
scale_x_discrete(breaks = c( seq(1,5,1) ) ) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_y_continuous(breaks = c( seq(-3,3,.25) ) ) +
scale_colour_manual(values=c("blue", "blue", "red","red")) +
facet_wrap(~ group, ncol=3)
对于每组,线条是标准差、平均值、第一和第三四分位数。我希望 mean 和 sd 为蓝色,第一和第三四分位数为红色。可以看到颜色不对。
(1) 如何控制线条的颜色,使 sd 和 mean 为蓝色,四分位数为红色?
(2) 如何让图例也与线条相匹配? 谢谢。
您可以按如下方式更改 scale_colour_manual
中的值向量:
scale_colour_manual(values=c(mu = "blue", sd = "blue", Q1 = "red", Q3 = "red"))
这样,顺序就不重要了。
完整的 ggplot
命令是:
ggplot(data=dat2 , aes(x=x, y=Value, group = Metric,colour = Metric)) +
geom_line() + geom_point() + ylab("value") +
xlab("v") +
scale_x_discrete(breaks = c( seq(1,5,1) ) ) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
scale_y_continuous(breaks = c( seq(-3,3,.25) ) ) +
scale_colour_manual(values=c(mu = "blue", sd = "blue", Q1 = "red", Q3 = "red")) +
facet_wrap(~ group, ncol=3)