Chris Evans
2023-Oct-06 09:09 UTC
[R] Is it possible to get a downward pointing solid triangle plotting symbol in R?
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
--
Chris Evans (he/him)
Visiting Professor, UDLA, Quito, Ecuador & Honorary Professor,
University of Roehampton, London, UK.
Work web site: https://www.psyctc.org/psyctc/
CORE site: http://www.coresystemtrust.org.uk/
Personal site: https://www.psyctc.org/pelerinage2016/
Jan van der Laan
2023-Oct-06 09:50 UTC
[R] Is it possible to get a downward pointing solid triangle plotting symbol in R?
Does adding
, show.legend = c("color"=TRUE, "fill"=FALSE)
to the geom_point do what you want?
Best,
Jan
On 06-10-2023 11:09, Chris Evans via R-help wrote:> 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)
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