Однажды профессор из Чилийского университета сделал предложение моей докторской диссертации. руководителю для совместной работы и разработки привлекательной фигуры для некоторых категорийных данных, т. е. вопросов и ответов по годам. По сути, это были результаты опроса разных стран об осведомленности об устойчивости к противомикробным препаратам (УПП).
В конце концов эта задача легла на меня, и я начал думать, как это сделать. Некоторые научные работы подсказывали мне, какой тип фигуры требуется, например, эта:
Поэтому я решил поработать над похожей фигурой в своем собственном стиле. Вот что я получил:
Что вы думаете? Эта цифра была включена в статью 2022 года. Вы можете проверить ее здесь.
Если вам интересно узнать, как я это сделал, вот поясненный код:
Я работал в ПО R версии 4.0.2 со следующими данными:
Как действовать?
- Загрузите нужные мне пакеты.
#Load packages library(readxl) #load table from an excel sheet library(ggplot2) #plot and create images library(scales) #customise legends in the graph
2. Давайте импортируем набор данных с помощью пакета readxl.
#Import dataset Graph <- read_excel("~/your_filename.xlsx") #change to your Path View(Graph)
3. Преобразуйте данные в факторы, поскольку мы работаем с категориальными данными.
# Convert to factors Graph$Year <- as.factor(Graph$Year) Graph$Status <- as.factor(Graph$Status) Graph$Question <- as.factor(Graph$Question)
4. Мы используем вспомогательную функцию для переноса строк. По умолчанию: целевая ширина 20 символов. Здесь я работал с 80.
swr = function(string, nwrap=50) { paste(strwrap(string, width=nwrap), collapse="\n") } swr = Vectorize(swr)
5. Мы применяем вспомогательную функцию к столбцу вопросов.
# Create line breaks in Question Graph$Question = swr(Graph$Question)
6. И мы построили сюжет. Я добавил несколько слоев к исходному сюжету, чтобы получить оригинальную версию. Подробности можно спросить в комментариях.
# Building a plot ggplot(Graph, aes (x = %, y = Year, colour = Status)) + geom_point() #Adding layers p <- ggplot(Graph, aes(x = %, y = Year, colour = Status)) p <- p + geom_point(aes(shape = Status), size = 3) p <- p + xlab("% of affirmative questions") + ylab("Year") + theme(plot.title = element_text(hjust = 0.5, lineheight = 1.5)) p <- p + facet_grid(Question~.) + theme(strip.text.y = element_text(angle = 0, lineheight = 1.2)) p <- p + geom_line(aes(color = Year), colour = "black") p <- p + theme(legend.position = "bottom") p
И вот оно. Я надеюсь, что это может быть полезно для тех, кто борется с тем, как выполнить другой способ отображения категориальных данных.
Лукас.