每组中不同的alpha值

问题描述 投票:2回答:2

我有下面的data

          mean      lower      upper   x  cat
1   0.02298658 0.02001936 0.02629616   0  A
2   0.02299030 0.02002340 0.02629639   0  B
3   0.02299402 0.02002744 0.02629662   0  C
4   0.02299774 0.02003149 0.02629685   0  D
7   0.03075102 0.02637643 0.03546341   5  A
8   0.03075596 0.02638214 0.03546877   5  B
9   0.03076089 0.02638786 0.03547412   5  C
10  0.03076583 0.02639357 0.03547948   5  D
13  0.04106720 0.03428711 0.04879853  10  A
14  0.04107372 0.03429811 0.04880438  10  B
15  0.04108024 0.03430911 0.04881024  10  C
16  0.04108676 0.03432012 0.04881610  10  D
19  0.05469522 0.04347790 0.06729005  15  A
20  0.05470377 0.04348976 0.06729357  15  B
21  0.05471233 0.04350163 0.06729748  15  C
22  0.05472088 0.04351350 0.06730640  15  D
25  0.07255268 0.05491805 0.09335719  20  A
26  0.07256381 0.05492779 0.09336202  20  B
27  0.07257493 0.05493754 0.09336686  20  C
28  0.07258606 0.05494730 0.09337170  20  D
31  0.09569158 0.06842579 0.12862716  25  A
32  0.09570589 0.06844165 0.12863947  25  B
33  0.09572019 0.06845752 0.12864678  25  C
34  0.09573450 0.06847338 0.12865291  25  D
37  0.12522569 0.08541780 0.17360485  30  A
38  0.12524379 0.08543727 0.17361856  30  B
39  0.12526188 0.08545674 0.17363227  30  C
40  0.12527998 0.08547622 0.17364598  30  D
43  0.16218708 0.10708009 0.23140493  35  A
44  0.16220950 0.10711512 0.23145163  35  B
45  0.16223192 0.10715016 0.23149834  35  C
46  0.16225435 0.10718520 0.23152234  35  D
49  0.20730452 0.13200609 0.30024572  40  A
50  0.20733159 0.13202424 0.30026912  40  B
51  0.20735866 0.13204240 0.30029252  40  C
52  0.20738574 0.13206056 0.30031592  40  D
55  0.26073142 0.16270517 0.37938950  45  A
56  0.26076310 0.16274097 0.37942921  45  B
57  0.26079479 0.16277678 0.37946892  45  C
58  0.26082648 0.16281259 0.37950864  45  D
61  0.32180096 0.19905517 0.46744402  50  A
62  0.32183675 0.19907373 0.46750282  50  B
63  0.32187253 0.19909230 0.46756161  50  C
64  0.32190832 0.19911087 0.46762041  50  D

并且我使用此代码来绘制图

ggplot(data = data, aes(y = mean, ymin = lower, ymax = upper, x = x, fill = cat)) +
  scale_fill_manual("category", values = c("#11CC66","#2277FF", "#AFAFAF", "#BA0000"),
                    labels = c("A", "B", "C", "D")) + 
  theme_classic() +
  theme(legend.position = "right") + 
  geom_ribbon(alpha = 0.35) + 
  geom_line() + 
  scale_y_continuous("Predicted probability", labels = scales::percent) +
  xlab("X") +
  labs(title = "Title")

[现在,我想为alphaABC(例如D)的每个类别设置不同的c(.1, .2, .3, .4)值,但使用geom_ribbon(alpha = c(.1, .2, .3, .4)仅会产生错误消息。

有人可以指出我正确的方向吗?

r ggplot2 alpha
2个回答
1
投票

您首先在cols上设置Alpha,因为您的行始终为黑色:

COLS = c("#11CC66","#2277FF", "#AFAFAF", "#BA0000")
avalues= c(.1, .2, .3, .4)
fillCOLS = sapply(1:4,function(i)alpha(COLS[i],avalues[i]))

ggplot(data = data, aes(y = mean, ymin = lower, ymax = upper, x = x, fill = cat)) +
  scale_fill_manual("category", values = fillCOLS,
                    labels = c("A", "B", "C", "D")) + 
  theme_classic() +
  theme(legend.position = "right") + 
  geom_ribbon() + 
  geom_line() + 
  scale_y_continuous("Predicted probability", 
  labels = scales::percent) +
  xlab("X") +
  labs(title = "Title") + 
  facet_wrap(~cat)

enter image description here

没有字母的图:

ggplot(data = data, aes(y = mean, ymin = lower, ymax = upper, x = x, fill = cat)) +
  scale_fill_manual("category", values = fillCOLS,
                    labels = c("A", "B", "C", "D")) + 
  theme_classic() +
  theme(legend.position = "right") + 
  geom_ribbon() + 
  geom_line() + 
  scale_y_continuous("Predicted probability", 
  labels = scales::percent) +
  xlab("X") +
  labs(title = "Title") + 
  facet_wrap(~cat)

enter image description here


1
投票

我想如果您的alpha必须依赖于类别变量,则可以在aes中传递它,并使用scale_alpha_manual设置alpha值:

ggplot(data = df, aes(y = mean, ymin = lower, ymax = upper, x = x, fill = cat, alpha = cat)) +
  scale_fill_manual("category", values = c("#11CC66","#2277FF", "#AFAFAF", "#BA0000"),
                    labels = c("A", "B", "C", "D")) + 
  theme_classic() +
  theme(legend.position = "right") + 
  geom_ribbon() + 
  geom_line() + 
  scale_y_continuous("Predicted probability", labels = scales::percent) +
  xlab("X") +
  labs(title = "Title")+
  scale_alpha_manual(name = "category", values = c(.1, .2, .3, .4))

enter image description here

示例数据

structure(list(Row = c(1L, 2L, 3L, 4L, 7L, 8L, 9L, 10L, 13L, 
14L, 15L, 16L, 19L, 20L, 21L, 22L, 25L, 26L, 27L, 28L, 31L, 32L, 
33L, 34L, 37L, 38L, 39L, 40L, 43L, 44L, 45L, 46L, 49L, 50L, 51L, 
52L, 55L, 56L, 57L, 58L, 61L, 62L, 63L, 64L), mean = c(0.02298658, 
0.0229903, 0.02299402, 0.02299774, 0.03075102, 0.03075596, 0.03076089, 
0.03076583, 0.0410672, 0.04107372, 0.04108024, 0.04108676, 0.05469522, 
0.05470377, 0.05471233, 0.05472088, 0.07255268, 0.07256381, 0.07257493, 
0.07258606, 0.09569158, 0.09570589, 0.09572019, 0.0957345, 0.12522569, 
0.12524379, 0.12526188, 0.12527998, 0.16218708, 0.1622095, 0.16223192, 
0.16225435, 0.20730452, 0.20733159, 0.20735866, 0.20738574, 0.26073142, 
0.2607631, 0.26079479, 0.26082648, 0.32180096, 0.32183675, 0.32187253, 
0.32190832), lower = c(0.02001936, 0.0200234, 0.02002744, 0.02003149, 
0.02637643, 0.02638214, 0.02638786, 0.02639357, 0.03428711, 0.03429811, 
0.03430911, 0.03432012, 0.0434779, 0.04348976, 0.04350163, 0.0435135, 
0.05491805, 0.05492779, 0.05493754, 0.0549473, 0.06842579, 0.06844165, 
0.06845752, 0.06847338, 0.0854178, 0.08543727, 0.08545674, 0.08547622, 
0.10708009, 0.10711512, 0.10715016, 0.1071852, 0.13200609, 0.13202424, 
0.1320424, 0.13206056, 0.16270517, 0.16274097, 0.16277678, 0.16281259, 
0.19905517, 0.19907373, 0.1990923, 0.19911087), upper = c(0.02629616, 
0.02629639, 0.02629662, 0.02629685, 0.03546341, 0.03546877, 0.03547412, 
0.03547948, 0.04879853, 0.04880438, 0.04881024, 0.0488161, 0.06729005, 
0.06729357, 0.06729748, 0.0673064, 0.09335719, 0.09336202, 0.09336686, 
0.0933717, 0.12862716, 0.12863947, 0.12864678, 0.12865291, 0.17360485, 
0.17361856, 0.17363227, 0.17364598, 0.23140493, 0.23145163, 0.23149834, 
0.23152234, 0.30024572, 0.30026912, 0.30029252, 0.30031592, 0.3793895, 
0.37942921, 0.37946892, 0.37950864, 0.46744402, 0.46750282, 0.46756161, 
0.46762041), x = c(0L, 0L, 0L, 0L, 5L, 5L, 5L, 5L, 10L, 10L, 
10L, 10L, 15L, 15L, 15L, 15L, 20L, 20L, 20L, 20L, 25L, 25L, 25L, 
25L, 30L, 30L, 30L, 30L, 35L, 35L, 35L, 35L, 40L, 40L, 40L, 40L, 
45L, 45L, 45L, 45L, 50L, 50L, 50L, 50L), cat = c("A", "B", "C", 
"D", "A", "B", "C", "D", "A", "B", "C", "D", "A", "B", "C", "D", 
"A", "B", "C", "D", "A", "B", "C", "D", "A", "B", "C", "D", "A", 
"B", "C", "D", "A", "B", "C", "D", "A", "B", "C", "D", "A", "B", 
"C", "D")), row.names = c(NA, -44L), class = c("data.table", 
"data.frame"), .internal.selfref = <pointer: 0x56276b4f1350>)
© www.soinside.com 2019 - 2024. All rights reserved.