Rui Barradas
2023-Oct-06 14:50 UTC
[R] Is it possible to get a downward pointing solid triangle plotting symbol in R?
?s 10:09 de 06/10/2023, Chris Evans via R-help escreveu:> The reason I am asking is that I would like to mark areas on a plot > using geom_polygon() and aes(fill = variable) to fill various polygons > forming the background of a plot with different colours. Then I would > like to overlay that with points representing direction of change: > improved, no reliable change, deteriorated. The obvious symbols to use > for those three directions are an upward arrow, a circle or square and a > downward pointing arrow.? There is a solid upward point triangle symbol > in R (ph = 17) and there are both upward and downward pointing open > triangle symbols (pch 21 and 25) but to fill those with a solid colour > so they will be visible over the background requires that I use a fill > aesthetic and that gets me a mess with the legend as I will have used a > different fill mapping to fill the polygons.? This silly reprex shows > the issue I think. > > library(tidyverse) > tibble(x = 2:9, y = 2:9, c = c(rep("A", 5), rep("B", 3))) -> tmpTibPoints > tibble(x = c(1, 5, 5, 1), y = c(1, 1, 5, 5), a = rep("a", 4)) -> > tmpTibArea1 > tibble(x = c(5, 10, 10, 5), y = c(1, 1, 5, 5), a = rep("b", 4)) -> > tmpTibArea2 > tibble(x = c(1, 5, 5, 1), y = c(5, 5, 10, 10), a = rep("c", 4)) -> > tmpTibArea3 > tibble(x = c(5, 10, 10, 5), y = c(5, 5, 10, 10), a = rep("d", 4)) -> > tmpTibArea4 > bind_rows(tmpTibArea1, > ????????? tmpTibArea2, > ????????? tmpTibArea3, > ????????? tmpTibArea4) -> tmpTibAreas > ggplot(data = tmpTib, > ?????? aes(x = x, y = y)) + > ? geom_polygon(data = tmpTibAreas, > ?????????????? aes(x = x, y = y, fill = a)) + > ? geom_point(data = tmpTibPoints, > ???????????? aes(x = x, y = y, fill = c), > ???????????? pch = 24, > ???????????? size = 6) > > Does anyone know a way to create a solid downward pointing symbol?? Or > another workaround? > > TIA, > > Chris >Hello, Maybe you can solve the problem with unicode characters. See the two scale_*_manual at the end of the plot. # Unicode characters for black up- and down-pointing characters pts_shapes <- c("\U25B2", "\U25BC") |> setNames(c("A", "B")) pts_colors <- c("blue", "red") |> setNames(c("A", "B")) ggplot(data = tmpTibAreas, aes(x = x, y = y)) + geom_polygon(data = tmpTibAreas, aes(x = x, y = y, fill = a)) + geom_point(data = tmpTibPoints, aes(x = x, y = y, color = c, shape = c), size = 6) + scale_shape_manual(values = pts_shapes) + scale_color_manual(values = pts_colors) -- Este e-mail foi analisado pelo software antiv?rus AVG para verificar a presen?a de v?rus. www.avg.com
Jeff Newmiller
2023-Oct-06 15:05 UTC
[R] Is it possible to get a downward pointing solid triangle plotting symbol in R?
Doesn't the outcome of this suggestion still depend on which fonts and output device you are using? ... and that is to some degree still system dependent... On October 6, 2023 7:50:00 AM PDT, Rui Barradas <ruipbarradas at sapo.pt> wrote:>?s 10:09 de 06/10/2023, Chris Evans via R-help escreveu: >> The reason I am asking is that I would like to mark areas on a plot using geom_polygon() and aes(fill = variable) to fill various polygons forming the background of a plot with different colours. Then I would like to overlay that with points representing direction of change: improved, no reliable change, deteriorated. The obvious symbols to use for those three directions are an upward arrow, a circle or square and a downward pointing arrow.? There is a solid upward point triangle symbol in R (ph = 17) and there are both upward and downward pointing open triangle symbols (pch 21 and 25) but to fill those with a solid colour so they will be visible over the background requires that I use a fill aesthetic and that gets me a mess with the legend as I will have used a different fill mapping to fill the polygons.? This silly reprex shows the issue I think. >> >> library(tidyverse) >> tibble(x = 2:9, y = 2:9, c = c(rep("A", 5), rep("B", 3))) -> tmpTibPoints >> tibble(x = c(1, 5, 5, 1), y = c(1, 1, 5, 5), a = rep("a", 4)) -> tmpTibArea1 >> tibble(x = c(5, 10, 10, 5), y = c(1, 1, 5, 5), a = rep("b", 4)) -> tmpTibArea2 >> tibble(x = c(1, 5, 5, 1), y = c(5, 5, 10, 10), a = rep("c", 4)) -> tmpTibArea3 >> tibble(x = c(5, 10, 10, 5), y = c(5, 5, 10, 10), a = rep("d", 4)) -> tmpTibArea4 >> bind_rows(tmpTibArea1, >> ????????? tmpTibArea2, >> ????????? tmpTibArea3, >> ????????? tmpTibArea4) -> tmpTibAreas >> ggplot(data = tmpTib, >> ?????? aes(x = x, y = y)) + >> ? geom_polygon(data = tmpTibAreas, >> ?????????????? aes(x = x, y = y, fill = a)) + >> ? geom_point(data = tmpTibPoints, >> ???????????? aes(x = x, y = y, fill = c), >> ???????????? pch = 24, >> ???????????? size = 6) >> >> Does anyone know a way to create a solid downward pointing symbol?? Or another workaround? >> >> TIA, >> >> Chris >> >Hello, > >Maybe you can solve the problem with unicode characters. >See the two scale_*_manual at the end of the plot. > > > ># Unicode characters for black up- and down-pointing characters >pts_shapes <- c("\U25B2", "\U25BC") |> setNames(c("A", "B")) >pts_colors <- c("blue", "red") |> setNames(c("A", "B")) > >ggplot(data = tmpTibAreas, > aes(x = x, y = y)) + > geom_polygon(data = tmpTibAreas, > aes(x = x, y = y, fill = a)) + > geom_point(data = tmpTibPoints, > aes(x = x, y = y, color = c, shape = c), > size = 6) + > scale_shape_manual(values = pts_shapes) + > scale_color_manual(values = pts_colors) > > > >-- Sent from my phone. Please excuse my brevity.