Добавьте звездочку значимости к линейному графику в ggplot2 - PullRequest
0 голосов
/ 08 мая 2020

У меня есть следующие данные, которые я изобразил на графике с двумя линиями. Я хочу добавить звездочку всякий раз, когда значимость равна «y».

structure(list(Year = c(0, 1, 2, 3, 0, 1, 2, 3), school_type = c("Management Change", 
"Management Change", "Management Change", "Management Change", 
"Full Closure", "Full Closure", "Full Closure", "Full Closure"
), pct_change = c(3.7, 2, 0.8, -1.1, 9.2, 6.9, 5.4, 6.6), significance = c("y", 
"n", "n", "n", "y", "y", "y", "y")), row.names = c(NA, -8L), class = c("tbl_df", 
"tbl", "data.frame"))

Я использовал следующий код для создания звездочек (после консультации с R ggplot2: добавить уровень значимости к линейному графику ), но проблема в том, что я не могу переместить эти звездочки вверх, чтобы вывести их за пределы точки, или изменить шрифт на то, что я хочу. Я попробовал nudge_y, но это не сработало.

ggplot(fig4, aes(x=Year, y=pct_change, color=school_type, group=school_type)) +
  geom_line(size=1) +
  geom_point(size=3) +
  theme_bw(base_family = "Georgia") +
  geom_point(data = fig4[fig4$significance == "y", ], shape = "*", size=4.233, color="black")

enter image description here

Когда я хочу добавить значимые звездочки к гистограмме, это просто. Я ввел:

ggplot(df, aes(label = ifelse(significance == "y", "*",""))

Однако по какой-то причине это вообще не работает для линейных графиков. Почему бы и нет?

1 Ответ

0 голосов
/ 10 мая 2020

1) Расположение значимой звездочки

Самый простой способ получить значимые звездочки над линией или точками ваших основных данных - это изменить значение y в вызове aes. См. Ответ.

Вы можете предварительно обработать это в своем наборе данных перед созданием графика, создав другую переменную, например sig_y, с помощью mutate, если вы используете dplyr

2) Гарнитура или семейство шрифтов : Грузия.

Это немного сложнее, и я нашел эти ссылки полезными: Изменение шрифтов в ggplot2 и этот: https://github.com/wch/extrafont

Создание дополнительных шрифты, доступные для R:

library(extrafont) # package for accessing fonts on your computer assuming you are running windows
font_import() # imports all the fonts on your computer; may take several minutes
fonts <- fonttable() # tabulates the extracted fonts allows you to check what fonts you have and you can confirm that Georgia is in the mix

Пакеты

library(ggplot2)
library(tibble)
library(extrafont)

Данные (Кстати, это полезный способ предоставить данные для любых будущих вопросов, поскольку он упрощает работу членов сообщество SO, чтобы воспроизвести ваш вопрос.)

fig4 <- tibble(Year = c(0, 1, 2, 3, 0, 1, 2, 3),
               school_type = c("Management Change", "Management Change", "Management Change", "Management Change", 
                               "Full Closure", "Full Closure", "Full Closure", "Full Closure"), 
               pct_change = c(3.7, 2, 0.8, -1.1, 9.2, 6.9, 5.4, 6.6), 
               significance = c("y", "n", "n", "n", "y", "y", "y", "y"))

Скрипт для сюжета

loadfonts(device = "win") # to give access to non-ggplot fonts

ggplot(fig4, aes(x=Year, y=pct_change, color=school_type, group=school_type)) +
  geom_line(size=1) +
  geom_point(size=3) +
  theme_bw(base_family = "Georgia")+
  geom_point(data = fig4[fig4$significance == "y", ], aes(Year, pct_change + 0.25), shape = "*", size=4.233, color="black")

Вывод

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...