覆盖GGPLOT传奇

发布于 2025-02-09 15:46:12 字数 1752 浏览 2 评论 0原文

这是我的问题。我有此data.frame:

df = data.frame("group" = c("a", "a", "b", "b", "a", "a", "b", "b"),
            "jour" = c(rep(2, 4), rep(8, 4)) + rep(c(- 0.25, - 0.25, 0.25, 0.25), 2),
            "value" = runif(8))

给出:

”

我想制作一个看起来像这样的情节:

“

但具有A组和B组的传奇(对应于红色和蓝色)。

如果我这样做:

ggplot(df, aes(x = jour, y = value, color = group)) + geom_line(size = 1.5) +
    theme(legend.text = element_text(size = 16), legend.title = element_text(size = 16), axis.text = element_text(size = 16), axis.title = element_text(size = 16)) 

我得到了:

“

因此,我创建了一个新的变量粘贴组和jour来删除不同的jour之间的链接,但是现在传说不好:

df$group_jour = paste(df$group, df$jour)

ggplot(df, aes(x = jour, y = value, color = group_jour)) + geom_line(size = 1.5) + 
    theme(legend.text = element_text(size = 16), legend.title = element_text(size = 16), axis.text = element_text(size = 16), axis.title = element_text(size = 16)) +
    scale_color_manual(values = c("red", "red", "blue", "blue")) 

>仅获得A组和B组而不是Group + Jour?

这是一个玩具的例子,实际上我有一个不同的组和4个不同的旅程。

Here is my problem. I have this data.frame :

df = data.frame("group" = c("a", "a", "b", "b", "a", "a", "b", "b"),
            "jour" = c(rep(2, 4), rep(8, 4)) + rep(c(- 0.25, - 0.25, 0.25, 0.25), 2),
            "value" = runif(8))

which gives :

df

from this I want to make a plot that look like this :

res

but with a legend for group a and group b (corresponding to red and blue colors).

If I do this :

ggplot(df, aes(x = jour, y = value, color = group)) + geom_line(size = 1.5) +
    theme(legend.text = element_text(size = 16), legend.title = element_text(size = 16), axis.text = element_text(size = 16), axis.title = element_text(size = 16)) 

I get this :

res_bad

So I created a new variable pasting group and jour to remove the link between different jour, but now the legend is bad :

df$group_jour = paste(df$group, df$jour)

ggplot(df, aes(x = jour, y = value, color = group_jour)) + geom_line(size = 1.5) + 
    theme(legend.text = element_text(size = 16), legend.title = element_text(size = 16), axis.text = element_text(size = 16), axis.title = element_text(size = 16)) +
    scale_color_manual(values = c("red", "red", "blue", "blue")) 

res_bad_2

How can I overwrite the legend to get only group a and group b and not group + jour ?

This is a toy example, in practice I have a 10 different group and 4 different jour.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

堇色安年 2025-02-16 15:46:12

只需在group上映射jour aes:

library(ggplot2)

ggplot(df, aes(x = jour, y = value, color = group, group = jour)) + geom_line(size = 1.5) +
  theme(legend.text = element_text(size = 16), legend.title = element_text(size = 16), axis.text = element_text(size = 16), axis.title = element_text(size = 16)) +
  scale_color_manual(values = c("red", "blue"))

“”

Simply map jour on the group aes:

library(ggplot2)

ggplot(df, aes(x = jour, y = value, color = group, group = jour)) + geom_line(size = 1.5) +
  theme(legend.text = element_text(size = 16), legend.title = element_text(size = 16), axis.text = element_text(size = 16), axis.title = element_text(size = 16)) +
  scale_color_manual(values = c("red", "blue"))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文