0
感谢您的回复!我试图澄清我的输出是什么。ggplot2:基于geom_area中的组的着色
我有一个数据集d,就像从文件中读取的一样。
pass site value region
1 0 1 1 A
2 0 2 10 A
3 0 3 10 A
4 0 4 10 B
5 0 5 10 B
6 0 6 10 C
7 0 7 10 C
8 0 8 10 C
9 0 9 10 D
10 0 10 10 E
11 0 11 0 E
12 1 1 100 A
13 1 2 25 A
14 1 3 34 A
15 1 4 54 B
16 1 5 64 B
17 1 6 98 C
18 1 7 59 C
19 1 8 92 C
20 1 9 37 D
21 1 10 96 E
22 1 11 20 E
23 2 1 93 A
24 2 2 80 A
25 2 3 3 A
26 2 4 86 B
27 2 5 10 B
28 2 6 81 C
29 2 7 7 C
30 2 8 60 C
31 2 9 90 D
32 2 10 0 E
33 2 11 200 E
我根据该段落中的站点值映射每个站点中每个站点的比例。我希望这些网站可以通过区域价值进行着色。我已经根据地区将其着色,但我希望该地区的每个网站都是我选择的三种颜色之一。这些数据集将成千上万的网站,所以我需要循环浏览三种颜色。我附上了我所做的一些事例。
该示例确实给出了情节,但使用了默认颜色。
ggplot(data=d, aes(x=rev(pass),y=rev(value),group=site)) +
geom_area(aes(fill=factor(rev(r_var))), position = "Fill")
下一个例子,只有通过的颜色区域A中的第一选项循环(所有色调灰色/黑色),而不是去到下一个区域的颜色。
r_var<-d$region
number = 3000
ggplot(data=d, aes(x=rev(pass),y=rev(value),group=site)) +
geom_area(aes(fill=factor(rev(r_var))), position = "Fill") +
scale_fill_manual(values = c(rep(c("#000000", "#151111", "#131111"),length.out = number),
rep(c("#231652", "#0e72ef", "#2c46c9"),length.out = number),
rep(c("#808080", "#a39f9f", "#514e4e"),length.out = number),
rep(c("#a50000", "#ff0000", "#e10000"),length.out = number),
rep(c("#56e729", "#b6ff15", "#6aff0c"),length.out = number)))
的最后一个例子,输出一个不带数据的曲线图。
r_var<-d$region
number = 3000
ggplot(data=d, aes(x=rev(pass),y=rev(value),group=site)) +
geom_area(aes(fill=factor(rev(r_var))), position = "Fill") +
scale_fill_manual(values = c("A" =rep(c("#000000", "#151111", "#131111"),length.out = number),
"B" = rep(c("#231652", "#0e72ef", "#2c46c9"),length.out = number),
"C" = rep(c("#808080", "#a39f9f", "#514e4e"),length.out = number),
"D" = rep(c("#a50000", "#ff0000", "#e10000"),length.out = number),
"E" = rep(c("#56e729", "#b6ff15", "#6aff0c"),length.out = number)))
我不知道,我明白了。 't = 2'和't = 3'的行具有相同的区域('A'),但它们不应该具有相同的颜色?如果这确实是你的意图,那么ggplot应该如何决定使用哪种颜色?随机或一些常规计划? – Stibu
还要更加小心你的代码。它不适用于您提供的数据。例如,'d'中没有列'val'和'var'。 – Stibu
感谢您的回复!我已经阐明了我需要的代码和附加的工作示例。 – everythingismines