У меня была идея для визуализации, которая включает в себя создание графика для каждой строки в моем наборе данных (58 строк), показывающего относительное положение значения, которое я выбираю, в шкале (например: 58 городов и положение размера населения одного города по отношению к другим).
Вот пример кода, показывающий мою структуру данных (nregs — название регионов, которые я изучаю). Я хочу создать «ранговый график», как я показал, для каждой строки, один график на основе total_pop, а другой на основе urban_pop.
structure(list(nregs = c("1.1 Javari e Interbacias Javari - Juruá",
"1.2 Transf. da Margem Esquerda do Solimões", "1.3 Juruá e Interbacias Juruá - Jutaí",
"1.4 Purus e Interbacias Purus - Juruá", "1.5 Negro", "1.6 Madeira e Interbacias Madeira - Purus",
"1.7 Estaduais Margem Esquerda do Amazonas", "1.8 Tapajós e Interbacias Tapajós - Madeira",
"1.9 Estaduais PA", "1.10 Xingu e Interbacias Xingu - Tapajós"
), urban_pop = c(63777, 83237, 265725, 717181, 2122424, 1693933,
837519, 1169865, 171045, 515124), total_pop = c(111120, 141473,
405955, 910484, 2357696, 2320307, 933181, 1639624, 304181, 831595
)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))
Поскольку английский не является моим родным языком, мне трудно даже искать решение в Интернете. Обычно я делаю визуализацию данных с помощью R и tidyverse. Может ли кто-нибудь дать мне хотя бы направление? Заранее спасибо.
Похоже, вы ищете что-то вроде этого:
library(ggplot2)
library(dplyr)
df %>%
mutate(urban_pop = rank(urban_pop),
total_pop = rank(total_pop)) %>%
tidyr::pivot_longer(-1) %>%
ggplot(aes(value, nregs)) +
geom_segment(aes(x = 1, y = nregs, xend = 10, yend = nregs)) +
geom_segment(data = expand.grid(x = seq(nrow(df)), y = seq(nrow(df)) - 0.1),
aes(x = x, y = y, xend = x, yend = y + 0.2)) +
scale_x_continuous(breaks = seq(nrow(df)), labels = rev(seq(nrow(df))),
name = "Rank") +
geom_point(aes(color = name), position = position_dodge(width = 0.5),
size = 4) +
scale_color_manual(values = c("red", "forestgreen")) +
theme_void() +
theme(axis.text.y = element_text(hjust = 1),
axis.text.x = element_text(),
axis.title.x = element_text(size = 16))
Обратите внимание, что ранги городского и общего населения кажутся одинаковыми для каждого города в вашей выборке.
это отличное начало для того, что я хотел на самом деле! большое спасибо
@fernandoschuh это здорово. См. здесь советы о том, что делать, когда кто-то отвечает на ваш вопрос.
Если вы поделитесь небольшим количеством примеров данных, кто-то, вероятно, даст вам полное решение в
ggplot
.dput
— это лучший способ поделиться демонстрационными данными, например,dput(your_data[1:10, ])
для первых 10 строк в формате копирования/вставки с включенной информацией о классе и структуре. Пожалуйста, отредактируйте небольшой образец данных в своем вопросе.