I have the below 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
And I use this code to produce a plot
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")
Now, I would like to set different alpha
values for each of the categories A
, B
, C
, and D
(say, c(.1, .2, .3, .4)
) but using geom_ribbon(alpha = c(.1, .2, .3, .4)
only produces an error message.
Can someone point me in the right direction?
I think if your alpha
have to be dependent of of your categorical variable, you can pass it in aes
and set values for alpha using scale_alpha_manual
:
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))
Example Data
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>)