使用颜色在散点图中指示三个不同的值
Indicate three diferent values in a scatterplott using colors
我的教授有以下任务:
使用 ggplot2 并创建另一个 variablesact_sm 和 pop_sm 的散点图。这次来自美国 (3)、英国 (4) 和跨国演员 (888) 的演员应该用不同的颜色表示。确保情节有一个图例。合理标注坐标轴。
我有以下 data.frame 个命名节点:
actor_type actor_ctr actor_pos pop_sm act_sm str
1 3 4 2 799 1087 1.3604506
102 NA 999 NA 78 90 1.1538462
103 NA 999 NA 78 90 1.1538462
104 3 4 2 441 NA NA
105 3 4 2 1049 789 0.7521449
106 4 75 1 264 948 3.5909091
107 4 75 1 264 948 3.5909091
4 3 4 2 799 1087 1.3604506
5 3 4 2 799 1087 1.3604506
6 3 4 2 799 1087 1.3604506
7 4 3 NA 158 212 1.3417722
8 4 3 NA 158 212 1.3417722
...
我想根据 act_sm 和 pop_sm 的值创建一个散点图,其中我想用不同颜色的点表示 actor_ctr 3、4 和 888 - 全部actor_ctr 中的其他值应该有一种颜色。我已经试过了,但没有用:
nodes%>% filter(nodes, actor_ctr%in% c(3,4,888)%>%
ggplot(nodes, aes(act_sm, pop_sm))+
geom_point(aes(x= act_sm, y= pop_sm, colour = actor_ctr), size=2)
而且我不知道怎么插入图例。
您的代码存在一些问题。
在 filter(...c()
之后缺少一个 close-paren。
使用 nodes %>% filter(actor_ctr...)
或 filter(nodes, actor_ctr...)
,不能同时使用。
不要在对 ggplot
的调用中引用 nodes
。有时您可以(并且应该)在 ggplot 层中引用外部数据框,这不是其中之一。以下是实际解释的内容:
nodes %>%
filter(actor_ctr %in% c(3,4,888)) %>%
ggplot(data = ., mapping = nodes, aes(act_sm, pop_sm)) +
geom_point(aes(x= act_sm, y= pop_sm, colour = actor_ctr), size=2)
其中.
指的是filter(...)
之后的8行数据,nodes
指的是管道开始前的帧。虽然 .
没有正式分配给变量,但它仍然是管道中该点的数据状态。在这里,它有 8 行,所有列都相同,但不难想出 .
和 origdata
具有完全不同的形状和属性的示例。
此外,由于那里的位置参数,mapping=
肯定不是你的 nodes
数据框。
你的色彩审美是基于一个数字,所以ggplot2
会推断它是连续的,而我相信它是事实序数或分类(离散)。这通常可以使用 factor(actor_type)
.
来解决
让我们尝试解决所有这些问题:
nodes %>%
filter(actor_ctr %in% c(3, 4, 888)) %>%
ggplot(aes(act_sm, pop_sm)) +
geom_point(aes(x = act_sm, y = pop_sm, colour = factor(actor_ctr)), size = 2)
我的教授有以下任务:
使用 ggplot2 并创建另一个 variablesact_sm 和 pop_sm 的散点图。这次来自美国 (3)、英国 (4) 和跨国演员 (888) 的演员应该用不同的颜色表示。确保情节有一个图例。合理标注坐标轴。
我有以下 data.frame 个命名节点:
actor_type actor_ctr actor_pos pop_sm act_sm str
1 3 4 2 799 1087 1.3604506
102 NA 999 NA 78 90 1.1538462
103 NA 999 NA 78 90 1.1538462
104 3 4 2 441 NA NA
105 3 4 2 1049 789 0.7521449
106 4 75 1 264 948 3.5909091
107 4 75 1 264 948 3.5909091
4 3 4 2 799 1087 1.3604506
5 3 4 2 799 1087 1.3604506
6 3 4 2 799 1087 1.3604506
7 4 3 NA 158 212 1.3417722
8 4 3 NA 158 212 1.3417722
...
我想根据 act_sm 和 pop_sm 的值创建一个散点图,其中我想用不同颜色的点表示 actor_ctr 3、4 和 888 - 全部actor_ctr 中的其他值应该有一种颜色。我已经试过了,但没有用:
nodes%>% filter(nodes, actor_ctr%in% c(3,4,888)%>%
ggplot(nodes, aes(act_sm, pop_sm))+
geom_point(aes(x= act_sm, y= pop_sm, colour = actor_ctr), size=2)
而且我不知道怎么插入图例。
您的代码存在一些问题。
在
filter(...c()
之后缺少一个 close-paren。使用
nodes %>% filter(actor_ctr...)
或filter(nodes, actor_ctr...)
,不能同时使用。不要在对
ggplot
的调用中引用nodes
。有时您可以(并且应该)在 ggplot 层中引用外部数据框,这不是其中之一。以下是实际解释的内容:nodes %>% filter(actor_ctr %in% c(3,4,888)) %>% ggplot(data = ., mapping = nodes, aes(act_sm, pop_sm)) + geom_point(aes(x= act_sm, y= pop_sm, colour = actor_ctr), size=2)
其中
.
指的是filter(...)
之后的8行数据,nodes
指的是管道开始前的帧。虽然.
没有正式分配给变量,但它仍然是管道中该点的数据状态。在这里,它有 8 行,所有列都相同,但不难想出.
和origdata
具有完全不同的形状和属性的示例。此外,由于那里的位置参数,
mapping=
肯定不是你的nodes
数据框。你的色彩审美是基于一个数字,所以
来解决ggplot2
会推断它是连续的,而我相信它是事实序数或分类(离散)。这通常可以使用factor(actor_type)
.
让我们尝试解决所有这些问题:
nodes %>%
filter(actor_ctr %in% c(3, 4, 888)) %>%
ggplot(aes(act_sm, pop_sm)) +
geom_point(aes(x = act_sm, y = pop_sm, colour = factor(actor_ctr)), size = 2)